日期/时间选择器颤振:“确定” /“取消”按钮不可见

时间:2019-02-28 09:45:16

标签: android ios dart flutter

flutter中的日期选择器小部件以白色显示“确定” /“取消”按钮,因此在白色背景中不可见。

_displayFromDate = await showDatePicker(
                    context: context,
                    initialDate: now,
                    firstDate: now,
                    lastDate: now.add(new Duration(days: 30)),
                  );

我尝试用主要的强调色(如黑色)更改页面主题。仍然不可见。按钮在那里,因为我可以点击它们,所以标题是不可见的。

[✓] Flutter (Channel master, v1.2.3-pre.67, on Mac OS X 10.13.6 17G5019, locale
    en-GB)
[✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
[✓] iOS toolchain - develop for iOS devices (Xcode 10.1)
[✓] Android Studio (version 3.2)
[✓] Connected device (2 available)

enter image description here

2 个答案:

答案 0 :(得分:1)

您需要覆盖-buttonTheme:

theme: ThemeData(
            buttonTheme: ButtonThemeData(textTheme: ButtonTextTheme.accent),
            accentColor: Colors.black,
            primaryColor: Colors.black)

enter image description here

答案 1 :(得分:0)

我一直将其调试到使用的实际小部件,因为该解决方案不适用于我。我发现的是buttonTheme绝对没有效果,而accentColor也没有效果。使用的是PrimaryColor,而不是答案中指定的颜色,而是使用colorScheme.primaryColor。 对于底部的按钮,始终使用primaryColor是ThemeData的.colorScheme部分。要使用我的主题并仅覆盖子窗口小部件的primaryColor,我使用以下内容:

final DateTime picked = await showDatePicker(
  context: context,
  builder: (context, child) {
    return SingleChildScrollView(
        child: Theme(
      child: child,
      data: Theme.of(context).copyWith(
          colorScheme: Theme.of(context)
              .colorScheme
              .copyWith(primary: <Desired Color>)),
    ));
  });

您会发现,在“浅色模式”下,原色还负责页眉部分的背景色(在该背景色中,大写字母表示所选日期)。不幸的是,这没有办法。在黑暗模式下,使用表面颜色。从Widget DatePickerHeader的文档中:

    // The header should use the primary color in light themes and surface color in dark

希望这会有所帮助,从我发现的结果来看,公认的答案根本不起作用!