Flutter 状态栏动态改变颜色

标签 flutter dart

大多数关于此主题的答案都建议采用以下解决方案。

import 'package:flutter_statusbarcolor/flutter_statusbarcolor.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    FlutterStatusbarcolor.setStatusBarColor(Colors.white);

但是根据这个answer

The build method is designed in such a way that it should be pure/without side effects.

建议的解决方案有一个缺点 - 如果我必须根据当前屏幕更改状态颜色,它就不起作用。

有什么办法可以处理吗?

最佳答案

您可以使用AnnotatedRegion 为每条路线指定不同的statusBarColor:

class MyApp extends StatelessWidget {
  Map<String, WidgetBuilder> get routes {
    return {
      '/': (context) {
        return AnnotatedRegion<SystemUiOverlayStyle>(
          value: const SystemUiOverlayStyle(statusBarColor: Colors.blue),
          child: Scaffold(body: Home()),
        );
      },
      '/foo': (context) {
        return AnnotatedRegion<SystemUiOverlayStyle>(
          value: const SystemUiOverlayStyle(statusBarColor: Colors.red),
          child: Scaffold(body: Foo()),
        );
      },
    };
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      routes: routes,
    );
  }
}

关于Flutter 状态栏动态改变颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56299842/

相关文章:

flutter - flutter:键盘来时如何显示多个小部件

flutter - Flutter flutter_in_app_purchases订阅FlutterInAppPurchses.instance.getSubscriptions()没有检索IAPItem的任何项目

flutter - 无法提取 native JNI库[Flutter]

flutter - Flutter中解析Json日期

flutter - 使用相机包授予权限会在出现异常时暂停调试器

dart - 如何在Dart 2中使用角形 Dart 组件的排版?

dart - HTTP 请求到 127.0.0.1 :80 fails

flutter - 如何用另一个 GestureDetector 包装 GestureDetector 并在任何地方获取事件

flutter - 创建多个初始路径

json - Flutter - 没有实例 getter 'lenght' 错误