如何在 Flutter 中设置 AppBar 操作按钮颜色

tja*_*and 5 flutter

我正在尝试AppBar使用主题设置我的动作图标的颜色,但由于某种原因它不起作用。这是我的最小代码示例:

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(
        primarySwatch: Colors.blue,
        iconTheme: IconThemeData(color: Colors.purple),
        primaryIconTheme: IconThemeData(color: Colors.red),
        accentIconTheme: IconThemeData(color: Colors.amber)
      ),
    home: Scaffold(
      appBar: AppBar(
        iconTheme: IconThemeData(color: Colors.green),
        actionsIconTheme: IconThemeData(color: Colors.yellow),
        actions: [
          IconButton(icon: Icon(Icons.add))
        ]
      )
    ));
  }
}
Run Code Online (Sandbox Code Playgroud)
  • 没有iconTheme任何颜色值有任何影响。
  • 在 中设置不透明度MaterialApp.iconThemeAppBar.iconTheme或者AppBar.actionsIconTheme确实生效
  • 显式设置Icon.color确实有效,但我认为我不应该这样做,对吗?

我如何获得IconButton尊重我的主题?

谢谢托马斯

编辑:通过Icon直接使用 a而不是 aIconButton我实际上能够让图标尊重我的主题,但我如何使其可点击?据https://api.flutter.dev/flutter/material/AppBar/actions.htmlIconButton是最常见的小部件才能使用AppBar.actions。那不正确吗?

tja*_*and 8

所以,显然我的问题是,我没有定义onPressed的属性IconButton。一旦我添加了它,我的主题就被正确应用了。

我知道这是一个必需的属性,但在构建/运行应用程序时我没有收到任何错误。

  • 请注意:通过将任何类型的按钮上的“onPressed”属性设置为“null”,它将被禁用,并将样式设置为禁用(您可以尝试使用基本的“RaishedButton”)。我个人会先为 UI 中使用的每个按钮编写“onPressed: (){}”。 (2认同)