【问题标题】:Custom ThemeData ignored/ not applied over default theme flutter自定义 ThemeData 被忽略/未应用于默认主题颤动
【发布时间】:2021-11-17 02:33:40
【问题描述】:

由于我的自定义主题被忽略,我可能会遗漏一些东西,我只是看到默认主题。这是唯一宣布主题的地方。在此之上没有其他小部件

ma​​in.dart:

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();

  runApp  (

  StreamProvider<LakoUser?>.value(
    value: AuthService().user,
    initialData: null,

    child:  MaterialApp(
      theme:  MyTheme.defaultTheme,
      debugShowCheckedModeBanner: false,

      initialRoute: 'sign_in',
      routes: {
        '/': (context) => Wrapper(),
        '/home': (context) => MainApp(),
      }
),
));
}

我的主题文件中没有发现任何问题: themes.dart:

import 'package:flutter/material.dart';

const PrimaryColor = const Color(0xff704c24);
const PrimaryColorLight = const Color(0xFFa1784d);
const PrimaryColorDark = const Color(0xFF422400);
.... 
....  etc..

class MyTheme {
  static final ThemeData defaultTheme = _buildMyTheme();

  static ThemeData _buildMyTheme() {
    final ThemeData base = ThemeData.light();

    return base.copyWith(
      primaryColor: PrimaryColor,
      primaryColorDark: PrimaryColorDark,
      primaryColorLight: PrimaryColorLight,
      ...
      etc.
      colorScheme: ColorScheme.fromSwatch().copyWith(secondary: SecondaryColor),
    );
  }
}

【问题讨论】:

  • 试试Theme.of(context)

标签: flutter dart themes


【解决方案1】:

您应该使用 colorScheme 而不是 primaryColor 属性。

return base.copyWith(
  colorScheme: ColorScheme(
    primary: PrimaryColor,
    ...
  ),
);

我不确定 Flutter 的哪个版本已更改,他们使用 ColorScheme 属性来获取材料设计颜色数据。

我假设您应该为黑暗模式创建黑暗主题数据并在 MaterialApp 下声明。

-- 添加--

我找到了关于primaryColor 和colorScheme 的很好的参考资料。 请参考以下链接。

What is the difference between ThemeData(primaryColor: Colors.red) and providing one with ColorScheme.primary

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-14
    • 2014-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-10
    • 1970-01-01
    相关资源
    最近更新 更多