Flutter 2.5.2版本中ThemeData设置primaryColor十六进制颜色不生效怎么办
问题原因
- Flutter 2.5.2版本中,
ThemeData的colorScheme属性优先级高于单独配置的primaryColor,ThemeData.dark()自带默认的colorScheme配置,你仅覆盖primaryColor的话,大部分组件会优先读取colorScheme中的主色配置,所以设置不会生效。 - 你使用的十六进制颜色格式
Color(0xFFCF3D10)是正确的,不存在格式错误。
修复代码
import 'package:flutter/material.dart'; import 'input_page.dart'; void main() => runApp(BMICalculator()); class BMICalculator extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( theme: ThemeData.dark().copyWith( // 覆盖colorScheme的primary属性使自定义主色生效 colorScheme: ThemeData.dark().colorScheme.copyWith( primary: const Color(0xFFCF3D10), ), // 如需统一修改AppBar背景色可以额外配置appBarTheme appBarTheme: const AppBarTheme( backgroundColor: Color(0xFFCF3D10), ), // 如需修改页面默认背景色可以添加scaffoldBackgroundColor配置 // scaffoldBackgroundColor: Color(0xFFxxxxxx), ), home: InputPage(), ); } }
补充说明
如果需要适配按钮、选中态等其他场景的主色,可以在colorScheme中对应配置secondary、tertiary等属性即可。
内容的提问来源于stack exchange,提问作者skr
相关产品推荐
相关产品推荐

