ThemeData介绍
theme: ThemeData(
Brightness? brightness, // 应用整体主题的亮度,用于按钮之类的小部件,已确定在使用主色或强调色时选择什么颜色。
VisualDensity? visualDensity, // 视觉密度
MaterialColor? primarySwatch, // 主题样式,设置primaryColor后该背景色会被覆盖
Color? primaryColor, // 主要部分背景颜色(导航栏和tabBar等)
Brightness? primaryColorBrightness, // primaryColor的亮度
Color? primaryColorLight, // primaryColor的浅色版
Color? primaryColorDark, // primaryColor的深色版
Color? accentColor, // 前景色(文本和按钮等)
Brightness? accentColorBrightness,
Color? canvasColor, // MaterialType.canvas的默认颜色
Color? shadowColor, // 阴影颜色
Color? scaffoldBackgroundColor, // scaffold的背景颜色,典型Material应用程序或应用程序内页面的背景颜色。
Color? bottomAppBarColor, // BottomAppBar的默认颜色。
Color? cardColor, // Card的颜色
Color? dividerColor, // Divider和popipMenuDivider的颜色,也用于ListTitle之间,DataTable的行之间。
Color? focusColor, // 突出颜色
Color? hoverColor, //
Color? highlightColor, // 高亮颜色,选中的泼墨动画期间使用的突出显示颜色,或用于指示菜单中的项。
Color? splashColor,
InteractiveInkFeatureFactory? splashFactory,
Color? selectedRowColor, // 选中row的颜色
Color? unselectedWidgetColor,
Color? disabledColor, // 不可点击时的颜色
Color? buttonColor, // RaiseButton按钮的颜色、
ButtonThemeData? buttonTheme, // 定义按钮的默认主题
ToggleButtonsThemeData? toggleButtonsTheme,
Color? secondaryHeaderColor,
Color? textSelectionHandleColor,
Color? backgroundColor,
Color? dialogBackgroundColor,
Color? indicatorColor, // 选项卡中选定的选项卡指示器的颜色
Color? hintColor, // 用于提示文本或占位符文本的颜色,例如在TextField中。
AppBarTheme? appBarTheme, // 导航栏主题
ScrollbarThemeData? scrollbarTheme,
...
),
在MaterialApp中直接定义主题各种相关颜色等
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return const MaterialApp(
theme: ThemeData(‘...’), // 这里定义
home: MyHomePage(),
);
}
}
flutter 会自动适配你配置的相关,同时你可以手动指定配置的style,方法如下: Text中使用MaterialApp的textTheme.title主题,当textTheme.title切换时, 这里的Text也会切换;如深夜模式/白昼模式切换
Container(
color: Theme.of(context).accentColor,
child: new Text(
'Text with a background color',
style: Theme.of(context).textTheme.title,
),
);