颤动全局材料本地化并初始化不协同工作的日期格式



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

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],
));
}

我也有一个初始化日期格式化在一个有状态的小部件中,像这样......

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

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

GlobalMaterialLocalizations.delegate,

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

我通过在pubspec.yaml中添加以下依赖项来解决问题:

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

小心缩进。

我也遇到了这个问题,在尝试了一下之后,发现在使用材料本地化时,如果您不指定支持的区域设置,它似乎默认为美国。

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

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 似乎也可以处理这个问题。

相关内容

最新更新