【问题标题】:Unable to override ThemeData无法覆盖 ThemeData
【发布时间】:2020-08-03 14:19:09
【问题描述】:

我想在 MenuPage 中使用不同的背景颜色。我正在尝试覆盖 themeData - 我已经按照官方 Flutter 页面中的 themeData 教程进行操作,但无法获得结果。大家有什么建议吗?

void main() => runApp(MyApp());

final ThemeData _themeData = new ThemeData( // app theme
        scaffoldBackgroundColor: darkNavy,
        canvasColor: lightNavy,
        accentColor: lightNavy,
        primarySwatch: Colors.grey,
        appBarTheme: AppBarTheme(
            color: darkNavy,
            brightness: Brightness.dark,
            elevation: 10,
            iconTheme: IconThemeData(
              color: lightGrey,
            ),
            textTheme: TextTheme(
                headline6: GoogleFonts.crimsonPro(
                    color: darkGrey,
                    fontSize: 20,
                    fontWeight: FontWeight.w400))),
      
);



class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    SystemChrome.setPreferredOrientations([
      DeviceOrientation.portraitUp,
    ]);

    return MaterialApp(
      debugShowCheckedModeBanner: false,
      theme: _themeData,
      home: HomeScreen(),
    );
  }
}

class MenuDashBoard extends StatefulWidget {

  @override
  _MenuDashBoardState createState() => _MenuDashBoardState();
}

class _MenuDashBoardState extends State<MenuDashBoard> {
  @override
  Widget build(BuildContext context) {
    return Theme(
        data: ThemeData(
              canvasColor: lightNavy,
              scaffoldBackgroundColor: lightNavy
            ),
      
      child: Scaffold(
        body: Container(
            padding: EdgeInsets.only(top: 30, bottom: 30, left: 20),
            child: Column(

我的主主屏幕有一个深海军背景我想在我的菜单页面有一个浅海军。

【问题讨论】:

  • 请添加您目前尝试过的内容。
  • 提及你想要实现什么样的主题
  • @mobina 实际代码很长,我会尝试添加重要的部分。我已经用代码更新了问题
  • @Bensel 我已经实现了我只想在菜单页面中用不同的背景颜色覆盖它的主题

标签: flutter themes


【解决方案1】:

您可以在主题数据中使用属性“scaffoldBackgroundColor”,设置为您想要的颜色有了这个,如果您使用脚手架小部件,您的后台应用程序将具有您想要的颜色。见:

MaterialApp(
   title: 'App',
   theme: ThemeData(
     scaffoldBackgroundColor: Colors.blue,
   ),
   home: YourScreen()
),

【讨论】:

  • 我已经添加了脚手架Backgroundcolor - 我想在 MenuPage 中覆盖它..
  • 哦,我明白了。然后您可以直接在菜单页面上指定背景颜色。您可以在 Scaffold Widget 中使用属性 backgroundColor
  • 我已经尝试过了,但我不起作用,覆盖方法也不起作用..我认为我错过了一些东西..你检查我的代码了吗?
  • 是的,我认为您应该删除 Theme 小部件并将更改直接放在 Scaffold 小部件中。你能看到吗你能明白吗?尝试在 Scaffold 小部件中设置 scaffoldBackgroundColor
  • 非常感谢您的宝贵时间。我找到了解决方案
猜你喜欢
  • 2012-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多