使对话框忽略 Flutter 中的默认主题

Posted

技术标签:

【中文标题】使对话框忽略 Flutter 中的默认主题【英文标题】:Make a dialog ignore default theme in Flutter 【发布时间】:2020-12-21 08:55:22 【问题描述】:

我正在使用 Flutter 创建一个应用程序。在我的 main.dart 文件中,我为这样的对话框指定了一个主题:

theme: ThemeData(
          primaryColor: Color(0xff2d2d2d),
          colorScheme: ColorScheme.dark(primary: Color(0xffe2e2e2)),
          accentColor: Color(0xffe2e2e2),
          dialogTheme: DialogTheme(
            backgroundColor: Color(0xff2d2d2d),
            titleTextStyle: TextStyle(
                fontWeight: FontWeight.w500,
                fontSize: 16,
                color: Color(0xffe2e2e2)),
          ),
        )

一切正常,但我的应用中有一些页面颜色相反。我使用searchable_dropdown 包在其中一个下拉列表中放置了一个下拉列表,它创建了一个包含国家列表的对话框,但它采用了该主题的所有颜色。有没有办法让它以某种方式忽略默认主题并提供另一个主题?

这是下拉菜单的代码:

SearchableDropdown.single(
          items: countries.map<DropdownMenuItem<String>>((country) 
            return (DropdownMenuItem<String>(
                child: Text(country['name']), value: country['name']));
          ).toList(),
          value: _country,
          searchHint: null,
          onChanged: (value) 
            setState(() 
              _country = value;
            );
          ,
          dialogBox: false,
          isExpanded: true,
          menuConstraints: BoxConstraints.tight(Size.fromHeight(350))),

【问题讨论】:

【参考方案1】:

您可以做的是,只需覆盖默认主题并在 textstyle 属性中传递您的自定义主题。

Theme.of(context).textTheme.copyWith()

【讨论】:

以上是关于使对话框忽略 Flutter 中的默认主题的主要内容,如果未能解决你的问题,请参考以下文章

自定义活动主题,默认对话框主题

Flutter 专题28 易忽略的小而巧的技术点汇总 #yyds干货盘点#

Flutter-自定义警报对话框未显示

按下 Flutter 的浮动操作按钮的简单对话框

在 iOS 上点击对话框中的允许按钮的 Flutter 集成测试失败

如何像 Flutter 中的 Spinner 一样在 DropdownButton 下方打开 DropDown 对话框?