自定义 ThemeData 被忽略/未应用于默认主题 flutter

Custom ThemeData ignored/ not applied over default theme flutter

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

main.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),
    );
  }
}

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

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

我不确定哪个版本的 Flutter 发生了变化,他们使用 ColorScheme 属性 来 material 设计颜色数据。

而且我假设您应该为深色模式创建深色主题数据并在 MaterialApp 下声明。

-- 添加了 --

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