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