如何在颤动中更改显示日期选择器的语言

Posted

技术标签:

【中文标题】如何在颤动中更改显示日期选择器的语言【英文标题】:How to change language of Show date picker in flutter 【发布时间】:2020-08-15 04:00:57 【问题描述】:

我想在显示日期选择器中将语言从英语更改为法语,请在下面找到我正在使用的代码以及应该解决该问题的代码,但它使代码不适用于这部分:

              new Step(
              title: new Text("Quelle est la date de 1er immatriculation?"),
              content: Column(
                children: <Widget>[
                 Text(_datetime == null ? "Vous n'avez pas encore choisi de date" : _datetime.toString().substring(0, 10)),

                  RaisedButton(
                      child: Text('choisissez une date'),
                    onPressed: () 
                    showDatePicker(context: context,
                      locale : const Locale("fr","FR"),//this line making the code not working too
                      builder: (BuildContext context, Widget child) 
                        return Theme(
                          data: ThemeData.fallback(),
                          child: child,
                        );
                      ,
                     // locale: const Locale('eu', 'FR'),
                      initialDate: DateTime.now(),
                        firstDate: DateTime(1920),
                          lastDate: DateTime(2100),
                      ).then((date) 
                      setState(() 
                        _datetime =  date;
                      );
                      );
                    
                 ),
                ],
              ),
              isActive: _currentStep >= 0,
              state:
              _currentStep >= 2 ? StepState.complete : StepState.disabled,
            ),

【问题讨论】:

【参考方案1】:

为了以本地语言显示日期选择器,您需要使用flutter_localizations 插件并在主代码中的MaterialApp 中指定localizationDelegatessupportedLocales。下面是在French 中显示日期选择器的示例工作代码:

    pubspec.yaml 中添加flutter_localizations 插件并运行pub get

    在 dart 文件中导入插件。

    MaterialApp内,添加以下内容:

     return MaterialApp(
           localizationsDelegates: [
             GlobalMaterialLocalizations.delegate
           ],
           supportedLocales: [
             const Locale('en'),
             const Locale('fr')
           ],
    

    ....

     body: Center(
               child: RaisedButton(
                 child: Text('Tap'),
                 onPressed: () 
                   showDatePicker(
                     context: context,
                       locale : const Locale("fr","FR"),
                     initialDate: DateTime.now(),
                     firstDate: DateTime(2018),
                     lastDate: DateTime(2030),
                     builder: (BuildContext context, Widget child) 
                       return Theme(
                         data: ThemeData.dark(),
                         child: child,
                       );
                     
                   );
                 ,
               )
             )
    

    再次运行应用程序(热重启)并看到 datepicker 出现在 French 中。

【讨论】:

导入为 import 'package:flutter_localizations/flutter_localizations.dart';【参考方案2】:

我关注了@Darshan's answer,但出现以下错误:

Unsupported operation: Cannot set value in unmodifiable Map

在我从main.dart 中删除await initializeDateFormatting('fr_FR'); 之后,它起作用了!

【讨论】:

以上是关于如何在颤动中更改显示日期选择器的语言的主要内容,如果未能解决你的问题,请参考以下文章

如何将颤动的日期选择器值添加到文本字段?

如何更改 WPF 日期选择器的图标?

如何更改日期范围选择器的日期格式?

如何更改 Chrome 原生日期时间选择器的蓝色?

如何使用更改事件更改启用日期时间选择器的小时数?

如何更改 Material UI 的日期选择器的填充?