flutter - ThemeData 中的 copyWith 在 MaterialApp 中不起作用
问题描述
如何在 ThemeData 中将 fontFamily 与 copyWith 一起使用或如何修复我的以下错误?
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Consumer2<ThemeNotifier, SettingNotifier>(builder:
(context, ThemeNotifier theme, SettingNotifier settings, child) {
return MaterialApp(
theme: theme.getTheme().copyWith(
textTheme: theme.getTheme()
.textTheme
.apply(fontFamily: settings.getFontSetting()),
),
debugShowCheckedModeBanner: false,
home: MainHomePage(),
);
});
}
}
主题数据类如何在主题数据中添加fontFamily或在copyWith中添加文本主题我想在MaterialApp中添加带有copyWith的textTheme到getFonts任何人都可以解决这个问题...................... .....................
class ThemeNotifier with ChangeNotifier {
ThemeData _themeData;
ThemeData getTheme() => _themeData;
ThemeNotifier() {
ThemeManager.readData('themeMode').then((value) {
print('App Theme value read from storage: ' + value.toString());
var themeMode = value;
if (themeMode == 'yellow') {
_themeData = yellow;
} else {
if (themeMode == 'red') {
_themeData = red;
} else {
if (themeMode == 'green') {
_themeData = green;
} else {
_themeData = orange;
}
}
}
notifyListeners();
});
}
void setOrangeTheme() async {
_themeData = orange;
ThemeManager.saveData('themeMode', 'orange');
notifyListeners();
}
void setRedTheme() async {
_themeData = red;
ThemeManager.saveData('themeMode', 'red');
notifyListeners();
}
void setYellowTheme() async {
_themeData = yellow;
ThemeManager.saveData('themeMode', 'yellow');
notifyListeners();
}
void setGreenTheme() async {
_themeData = green;
ThemeManager.saveData('themeMode', 'green');
notifyListeners();
}
}
解决方案
查看。这个
ThemeData _buildDarkTheme() {
final baseTheme = ThemeData(fontFamily: "Sunflower",);
return baseTheme.copyWith(
brightness: Brightness.dark,
primaryColor: Colors.grey[800],
accentColor: Colors.grey[850]);
}
然后在我将其应用到我的应用程序时执行此操作,如下所示:
class MyApp extends StatelessWidget {
MyApp({Key key}) : super(key: key);
@override
Widget build(BuildContext context) {
return new MaterialApp(
theme: _buildDarkTheme(),
home: new Scaffold(
appBar: _buildAppBar(),
body: new Container(
color: Theme.of(context).accentColor,
height: double.infinity,
child:.....
推荐阅读
- javascript - 使用 JavaScript 的 url 发送 laravel ( app()->getLocale() )
- rabbitmq - rabbitmq 流控制日志记录
- linux - Bash Script如何逐个显示文件名
- php - 在php中转换数字列表
- python - Python sklearn 中的训练集
- kubectl - 为什么命令式 pod 创建没有“kubectl create”?
- reactjs - firebaseAuthIsReady 在 React / Redux / Materialize 应用程序中禁用模态和 Sidenav 模态
- r - 如何在 R 文本挖掘中更改 termDocumentmatrix 的语言?
- node.js - 无法使用 net.connect 连接到套接字
- vba - Word VBA函数在浮动图像页面上查找位置?