我在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],
));
}
在这样的有状态小部件中,我也有一个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有多重要?
答案 0 :(得分:1)
我通过添加 pubspec.yaml 解决了该问题 下一个: flutter_localizations: sdk:颤抖
注意缩进: pubspec
答案 1 :(得分:0)
我也遇到了这个问题,经过一番尝试后发现,如果您未指定支持的语言环境,则在使用“材料”语言环境时,默认显示为“美国”。
添加以下受支持的语言环境可以显示英国日期格式,而不是美国日期格式。
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似乎也可以处理此问题。