在Flutter MaterialApp小部件中使用ThemeData copyWith的正确方法是什么?

问题描述 投票:0回答:1

我在复制accentColor之后尝试更改ThemeData.light(),然后在此示例屏幕中显示了FloatingActionButton

class Sample extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      floatingActionButton: FloatingActionButton(
        onPressed: () {},
        child: Icon(Icons.add),
      ),
     )}}

然后在main.dart的主窗口小部件中调用runApp,如果我像这样为ThemeData小部件设置MaterialApp,则FloatingActionButton将具有橙色。

theme: ThemeData(
  accentColor: Colors.orange
)

但是如果我尝试从Themedata.light().copyWith继承颜色,则FloatingActionButton仍然会从浅色主题变成蓝色。

theme: ThemeData.light().copyWith(
  accentColor: Colors.orange
)

我曾期望FloatingActionButton应该具有橙色,因为它继承了light主题并覆盖了accentColor

flutter dart material-design flutter-layout
1个回答
0
投票
theme:ThemeData.dark().copyWith( textTheme:ThemeData.dark().textTheme.copyWith( title :TextStyle( --your color and text configuratons here like color,font etc) button: TextStyle(--do--), ...and so on.... ) )

您希望在默认文本标题中使用的配置将进入上述title属性的TextStyle内,并且与按钮相同

现在您可以通过使用此功能在您的FAB内实现这一目标,

color: Theme.of(context).textTheme.button.color,

通过这样做,您可以获得在主题数据中为按钮设置的颜色。

如果您强制使用默认的配色,则必须使用

theme:ThemeData( primaryColor: ----- accentColor : ----- )

这将允许您使用FAB的默认强调色

© www.soinside.com 2019 - 2024. All rights reserved.