如何更改 Flutter WEB 中的“状态栏”颜色? (保存为书签后)

Posted

技术标签:

【中文标题】如何更改 Flutter WEB 中的“状态栏”颜色? (保存为书签后)【英文标题】:How to change 'Status Bar' colour in Flutter WEB? (After saving as a bookmark) 【发布时间】:2021-08-25 22:52:12 【问题描述】:

我可以将我的 Flutter Web 应用程序保存在主屏幕上作为书签图标。当我打开它时,状态栏的颜色是黑色的,看起来很奇怪,不像是“类似应用程序”。

如何为状态栏赋予与脚手架相同的颜色?

我现有的代码如下:

...
@override
  Widget build(BuildContext context) 
    return ChangeNotifierProvider<CP>(
      create: (BuildContext content) => CP(),
      child: MaterialApp(
          title: 'App title',
          debugShowCheckedModeBanner: false,
          theme: ThemeData(
            canvasColor: Colors.transparent,
            primarySwatch: white,
            //primaryColor: Colors.white
          ),
          routes: 
            ...
          ,
          home: MainBody()),
    );
  


class MainBody extends StatefulWidget 
  @override
  _MainBodyState createState() => _MainBodyState();


class _MainBodyState extends State<MainBody> 

  @override
  Widget build(BuildContext context) 
    return Scaffold(
      resizeToAvoidBottomInset: false,
      body: Container(
              decoration: BoxDecoration(
                gradient: LinearGradient(
                  stops: [0.1, 1],
                  end: Alignment.bottomCenter,
                  begin: Alignment.topCenter,
                  colors: [
                    Provider.of<CP>(context).primary,
                    Provider.of<CP>(context).secondary,
                  ],
                ), //Provider.of<CP>(context).fMainPageGradient
              ),
              child: SafeArea(
                child: Column(
                  mainAxisAlignment: MainAxisAlignment.spaceEvenly,
                  crossAxisAlignment: CrossAxisAlignment.stretch,
                  children: <Widget>[
                  ....

【问题讨论】:

【参考方案1】:

只需将 index.html 中的这一行添加到 &lt;head&gt; 标记中,并将“#000000”替换为您喜欢的颜色即可。

<meta name="theme-color" content="#000000">

【讨论】:

【参考方案2】:

你可以用这个改变状态栏的颜色

  @override
  void initState() 
    updateStatusBar();
    super.initState();
  

  void updateStatusBar() 
    SystemChrome.setSystemUIOverlayStyle(
      SystemUiOverlayStyle(statusBarColor: Colors.amber),
    );
  

【讨论】:

感谢@Jaime,但这不适用于颤振网络。我查过了。

以上是关于如何更改 Flutter WEB 中的“状态栏”颜色? (保存为书签后)的主要内容,如果未能解决你的问题,请参考以下文章

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

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

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

Flutter中如何自定义状态栏?

Flutter:在 iOS 中更改状态栏颜色

如何让 Flutter 应用在​​ android 导航栏后面绘制并使导航栏完全透明?