当前位置: 首页 > 知识库问答 >
问题:

Flutter全局材质本地化和初始化日期格式不一起工作

宦翔
2023-03-14

我在flutter应用程序中使用本地化,但也想使用初始化日期格式本地化日期格式。我的主要看起来像这样...

  void main() {
    runApp(new MaterialApp(
    supportedLocales:
    [const Locale('en', 'US'),
    const Locale('en', 'AU')],
    localizationsDelegates: [
      const DemoLocalizationsDelegate(),
      GlobalMaterialLocalizations.delegate,
      GlobalWidgetsLocalizations.delegate
    ],
    home: new ThirdPageWidget(),
    navigatorObservers: [routeObserver],
    ));
 }

另外,我有一个初始化DateFormating在一个有状态的小部件中,就像这样...

@override
void initState() {
   super.initState();
   initializeDateFormatting().then((_) {
      dateFormat = new DateFormat.yMd('en_AU');
      print(dateFormat.format(DateTime.now()));
});

现在,当区域设置en_AU日期的格式是月/日/年美式样式,但是当我删除这行代码时

GlobalMaterialLocalizations.delegate,

日期正确显示日/月/年。有人知道我能做什么来解决这个问题吗?拥有globalmaterialslocalizations . delegate有多重要?

共有2个答案

哈沛
2023-03-14

我也遇到了这个问题,在玩了一点之后,我发现当使用材料本地化时,如果您不指定支持的语言环境,我们会默认使用它。

添加以下支持的区域设置允许显示英国日期格式,而不是美国日期格式。

        localizationsDelegates: [
          const DemoLocalizationsDelegate(),
          GlobalMaterialLocalizations.delegate,
          GlobalWidgetsLocalizations.delegate,
        ],
        supportedLocales: [
          const Locale('en', 'US'), // English US
          const Locale('en', 'GB'), // English UK
          // ... other locales the app supports
        ],

我不必显式初始化DateFormat类,因为Material似乎也能处理这个问题。

须巴英
2023-03-14

我通过添加pubspec解决了这个问题。yaml以下依赖项:

dependencies:
  ...
  flutter_localizations:
    sdk: flutter
  ...

小心压痕。

 类似资料:
  • 因此,我有一个类“Person”,它包含一个具有4个参数(3个字符串和1个本地日期)的构造函数和一个重写的toString方法,该方法将输出写入控制台(它还将LocalDate变量转换为字符串)。以下是代码: 现在,在main方法中,我创建了3个具有不同参数的不同对象,并将它们全部添加到ArrayList中,如下所示: 程序运行良好,我得到以下格式的输出: 现在,我希望这个日期显示为“1968年1

  • 我尝试在java中使用本地化以本地样式打印日期。我已经使用数字和货币制作了类似的功能,但我未能将相同的行为应用到日期。 正如我在几天前发布此主题时所了解的,GraalVM Quarkus Locale在本机模式下,使用本机模式下的本地化需要使用创建一个“@AutomaticFeature”。 这个技巧适用于数字和货币: 但它不适用于DateTimeFormatter: 在开发模式下一切正常,但在原

  • 主要内容:DateFormat 类,SimpleDateFormat 类格式化日期表示将日期/时间格式转换为预先定义的日期/时间格式。例如将日期“Fri May 18 15:46:24 CST2016” 格式转换为 “2016-5-18 15:46:24 星期五”的格式。 在 Java 中,可以使用 DateFormat 类和 SimpleDateFormat 类来格式化日期,下面详细介绍这两个格式化日期类的使用。 DateFormat 类 DateFormat 是日

  • Parameter Position Type Required Default Description 1 string No %b %e, %Y This is the format for the outputted date. 输出日期的格式。 2 string No n/a This is the default date if the input is empty. 输入为空时的默认时

  • 冬眠。xml: 启动tomcat时出错: 2016年5月8日上午10:02:02组织。springframework。网状物上下文ContextLoader initWebApplicationContext严重:上下文初始化失败。springframework。豆。工厂BeanCreationException:创建名为“sessionFactory”的bean时出错,该名称在URL[文件:/D

  • 问题内容: 我有一个关于Spring + Thymeleaf日期格式的问题。我有一个简单的实体与领域。我想以表单形式从用户那里获取此日期并将其保存到MySQL数据库。我收到这样的错误: 无法将类型java.lang.String的属性值转换为属性日期所需的类型java.time.LocalDate;嵌套异常是org.springframework.core.convert.ConversionFa