首页 > 解决方案 > 更改应用程序语言后,showTimePicker 对话框带有 24 小时抖动

问题描述

showTimePicker在我的应用程序中使用。另外,我正在为我的颤振应用程序使用两种语言(英语' en '和西班牙语' es ')的国际化。

Padding(
              padding: EdgeInsets.all(2),
              child: MaterialButton(
                minWidth: double.infinity,
                onPressed: () async {
                  TimeOfDay picked = await showTimePicker(
                    context: context,
                    initialTime: TimeOfDay.now(),
                    builder: (BuildContext context, Widget child) {
                      return MediaQuery(
                        data: MediaQuery.of(context)
                            .copyWith(alwaysUse24HourFormat: false),
                        child: child,
                      );
                    },
                  );
                },
                child: Text(
                  S.of(context).set_time,
                  textAlign: TextAlign.center,
                  style: TextStyle(
                      color: Theme.of(context).primaryColor, fontSize: 14),
                ),
              ),
            ),

我面临的问题是最初当我用英语运行我的应用程序时,它工作正常并显示timePicker和 12 小时格式。但是,当我从应用程序将应用程序语言更改为西班牙语时,它将开始显示timePicker和 24 小时格式。请在下面找到相同的屏幕截图。

1. App语言为英文时:

在此处输入图像描述

2. App语言更改为西班牙语时:

在此处输入图像描述

当我将supportedLocalesvalue 更改为Locale('es', '')from时,我遇到了这个问题Locale('en', '')。但我不知道如何解决这个问题。

标签: flutterdartlocalizationdatetimepickertimepicker

解决方案


final dateTime = await showTimePicker(
          context: context,
          initialTime: TimeOfDay.now(),
          builder: (context, child) {
            if (MediaQuery.of(context).alwaysUse24HourFormat) {
              return child;
            } else {
              return Localizations.override(
                context: context,
                locale: Locale('en', 'US'),
                child: child,
              );
            }
      },
    );

推荐阅读