Flutter 全局材料本地化和初始化日期格式无法协同工作
Posted
技术标签:
【中文标题】Flutter 全局材料本地化和初始化日期格式无法协同工作【英文标题】:Flutter global material localizations and initialize date formatting not working together 【发布时间】:2019-02-14 10:16:58 【问题描述】:我在颤振应用程序中使用本地化,但也想使用初始化日期格式来本地化日期格式。我的主要看起来是这样的......
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],
));
我在这样的有状态小部件中有一个 initializeDateFormatting ...
@override
void initState()
super.initState();
initializeDateFormatting().then((_)
dateFormat = new DateFormat.yMd('en_AU');
print(dateFormat.format(DateTime.now()));
);
现在,当区域设置为 en_AU 时,日期格式为美国风格的月/日/年,但当我删除这行代码时
GlobalMaterialLocalizations.delegate,
日期正确显示日/月/年。有谁知道我能做些什么来解决这个问题?拥有 GlobalMaterialLocalizations.delegate 有多重要?
【问题讨论】:
【参考方案1】:我通过添加 pubspec.yaml 解决了这个问题 以下依赖:
dependencies:
...
flutter_localizations:
sdk: flutter
...
注意缩进。
【讨论】:
可能还得把这个导入main.dart:import 'package:flutter_localizations/flutter_localizations.dart';
是yaml,当然缩进很重要:)【参考方案2】:
我也遇到过这个问题,玩了一会儿后,发现在使用 Material 本地化时,如果您不指定支持的语言环境,它似乎默认为美国。
添加以下受支持的语言环境允许显示英国日期格式而不是美国日期格式。
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 似乎也可以处理这个问题。
【讨论】:
以上是关于Flutter 全局材料本地化和初始化日期格式无法协同工作的主要内容,如果未能解决你的问题,请参考以下文章
ORA-01821: 本地时间的 ISO 8601 日期的日期格式无法识别错误
MariaDB:如何使用STR_TO_DATE考虑本地日期格式?