繁体   English   中英

如何更改 Flutter 中的默认后退按钮图标?

[英]How to change default back button icon in Flutter?

我将如何使用主题更改 flutter 中的后退按钮图标。 所以它可以体现在整个应用程序中。 我在主题中看到了多个选项来更改图标的大小和颜色。 但是没有看到更改图标选项。

我不确定这是否是正确的方法。 我还在学习,我不知道这是否适用于所有情况。 我在开发应用程序时使用 VS Code 完成了此操作。

我查找了后退按钮引用(Shift + Alt + F12)并在 flutter sdk 中找到了实际按钮。我在back_button.dart文件中更改了它,该文件可以在您的 flutter 安装文件夹中找到: c:\flutter\packages\flutter\lib\src\material\back_button.dart

在那里,编辑按钮的 static IconData 方法并选择您想要用于任何平台的任何图标。

  static IconData _getIconData(TargetPlatform platform) {
    switch (platform) {
      case TargetPlatform.android:
      case TargetPlatform.fuchsia:
      case TargetPlatform.linux:
      case TargetPlatform.windows:
      case TargetPlatform.iOS:
      case TargetPlatform.macOS:
        return Icons.arrow_back_ios;
    }
  }

在上述情况下,Icons.arrow_back_ios 将在所有平台中返回。 您可以为每个平台指定返回图标。

但是,我还没有在现实世界的“生产使用”情况下对此进行测试,所以我希望这里的其他人可以澄清一下。

例子:

Scaffold(
  appBar(
    leading: BackButton(), // icon depends on TargetPlattrom
  ),
),

或者,您可以使用自己的图标设置在IconButton上创建自己的常量小部件,而不是将其用作leading属性的值。 此外,还有一个AppBarTheme class,可以在创建ThemeData实例时使用。

https://api.flutter.dev/flutter/material/AppBarTheme-class.html

PS 如果您查看 AppBar 源代码,您会看到使用了常规小部件CloseButtonBackButton 所以它没有特定的风格。 你有两种方法:

  • 创建您自己的全局小部件并在每个 Scaffold 中使用它。
  • 使用您自己的领先属性子类 Scaffold 并使用它。

这将为您完成工作:

IconButton(
  onPressed: (){
    Navigator.pop(context);
  },
  icon:Icon(Icons.arrow_back_ios), 
  //replace with our own icon data.
  )

对于像我这样的未来寻求者。

appBar: AppBar(
              automaticallyImplyLeading: false,
              leading: Builder(
                builder: (BuildContext context) {
                  return IconButton(
                    icon: const Icon(Icons.alarm_on), // Put icon of your preference.
                    onPressed: () {
                      // your method (function), 
                    },
                  );
                },
              ),
              title: Text(widget.title),
              centerTitle: true,

上面的代码会将默认的后退图标更改为图标上的警报。 你可以把它改成任何东西。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM