如何仅在 Flutter 中的特定页面上更改状态栏颜色

Posted

技术标签:

【中文标题】如何仅在 Flutter 中的特定页面上更改状态栏颜色【英文标题】:How do I Change Status Bar Color only on a Specific Page in Flutter 【发布时间】:2021-10-06 02:31:54 【问题描述】:

如何在 Flutter 中仅更改特定页面上的状态栏颜色?我尝试使用AnnotatedRegion,但它更改了整个应用程序的状态栏颜色。

【问题讨论】:

请检查此链接,flutteragency.com/change-statusbar-color-in-flutter 让我知道结果 ***.com/a/53032540/14807758 也试试这个 【参考方案1】:

我把我的主要views/screens 包装成这样。

StatusBarColorChanger(
      isDark: true ,
      child: Scaffold(

如果您需要更多自定义,我为此创建了一个小部件。 你已经包装了每一页


class StatusBarColorChanger extends StatelessWidget 
  final Widget child;

  final bool isDark;

  StatusBarColorChanger(
    Key? key,
    required this.child,
    this.isDark = false,
  ) : super(key: key);

  @override
  Widget build(BuildContext context) 
    return AnnotatedRegion<SystemUiOverlayStyle>(
      value: SystemUiOverlayStyle(
        // For android.
        // Use [light] for white status bar and [dark] for black status bar.

        statusBarIconBrightness: isDark
            ? Platform.isAndroid
                ? Brightness.light
                : Brightness.dark
            : Brightness.dark,
        //  Platform.isAndroid? isDark ?  Brightness.light : Brightness.dark: ,

        statusBarColor: isDark ? Colors.black : Colors.white,

        // For ios.
        // Use [dark] for white status bar and [light] for black status bar.
        statusBarBrightness: isDark
            ? Platform.isAndroid
                ? Brightness.dark
                : Brightness.light
            : Brightness.light,
      ),
      child: Platform.isAndroid
          ? SafeArea(
              child: child,
            )
          : child,
    );
  


【讨论】:

以上是关于如何仅在 Flutter 中的特定页面上更改状态栏颜色的主要内容,如果未能解决你的问题,请参考以下文章

如何仅在特定页面上显示 route.v6 上的导航栏?

如何使用 Flutter 更改状态栏颜色?

Flutter:不使用AppBar时如何在Android和iOS上更改状态栏文本颜色[重复]

Flutter,Android - 是不是可以在启动(启动)屏幕上更改状态栏颜色?

Flutter 深色(暗黑)模式下 状态栏字体颜色为白色

Flutter-如何在深色模式下更改状态栏文字颜色?