如何覆盖textButtonTheme?
How to overwrite textButtonTheme?
我已经为 TextButton 定义了主题。
theme: ThemeData(
visualDensity: VisualDensity.adaptivePlatformDensity,
brightness: Brightness.light,
scaffoldBackgroundColor: const Color(0xfff9f9f9),
primaryColor: const Color(0xffff5f62),
textButtonTheme: TextButtonThemeData(
style: ButtonStyle(
shape: MaterialStateProperty.all(RoundedRectangleBorder(
side: const BorderSide(
color: Colors.black54,
),
borderRadius: BorderRadius.circular(20))),
backgroundColor: MaterialStateProperty.all(Colors.white))),
fontFamily: 'Sarabun',
textTheme: const TextTheme(
button: TextStyle(color: Colors.black),
),
),
但我想使用具有默认外观的 TextButton。如何覆盖它?
使用 .copyWith()
它基本上创建文本样式的副本,但给定的字段替换为新值。
您可以使用 Theme
小部件包装并提供 ThemeData()
,这将提供默认外观。
Theme(
data: ThemeData(),
child: TextButton(
onPressed: () {},
child: Text("wrapped with Theme"),
),
),
如果您想自定义初始主题,请使用
Theme(
data: Theme.of(context).copyWith(//things you like to override.),
child: TextButton(
onPressed: () {},
child: Text("wrapped with Theme"),
),
),
return TextButton(
onPressed: () {},
child: Text('TextButton'),
style: TextButton.styleFrom(),
);
我已经为 TextButton 定义了主题。
theme: ThemeData(
visualDensity: VisualDensity.adaptivePlatformDensity,
brightness: Brightness.light,
scaffoldBackgroundColor: const Color(0xfff9f9f9),
primaryColor: const Color(0xffff5f62),
textButtonTheme: TextButtonThemeData(
style: ButtonStyle(
shape: MaterialStateProperty.all(RoundedRectangleBorder(
side: const BorderSide(
color: Colors.black54,
),
borderRadius: BorderRadius.circular(20))),
backgroundColor: MaterialStateProperty.all(Colors.white))),
fontFamily: 'Sarabun',
textTheme: const TextTheme(
button: TextStyle(color: Colors.black),
),
),
但我想使用具有默认外观的 TextButton。如何覆盖它?
使用 .copyWith()
它基本上创建文本样式的副本,但给定的字段替换为新值。
您可以使用 Theme
小部件包装并提供 ThemeData()
,这将提供默认外观。
Theme(
data: ThemeData(),
child: TextButton(
onPressed: () {},
child: Text("wrapped with Theme"),
),
),
如果您想自定义初始主题,请使用
Theme(
data: Theme.of(context).copyWith(//things you like to override.),
child: TextButton(
onPressed: () {},
child: Text("wrapped with Theme"),
),
),
return TextButton(
onPressed: () {},
child: Text('TextButton'),
style: TextButton.styleFrom(),
);