如何在iOS上更改状态栏文本颜色

时间:2018-08-06 13:51:11

标签: flutter

我对这一切扑朔迷离。我到处搜索以找到解决此小问题的方法。 有没有办法更改状态栏的颜色? 另外,当我使用诸如colors.blue之类的颜色时,我可以看到状态栏中的文本质量不好。

谢谢

enter image description here

appBar: AppBar(
    elevation : 0.0,
    leading: IconButton(
      icon: Icon(Icons.menu),
      tooltip: 'Navigation menu',
      onPressed: null,
    ),
    actions: <Widget>[
      IconButton(
        icon: Icon(Icons.search),
        tooltip: 'Search',
        onPressed: null,
      ),
    ],
  ),

8 个答案:

答案 0 :(得分:15)

@安东尼 基本上,您可以设置主题的亮度,也可以使用以下命令手动覆盖应用栏的亮度:

appBar: new AppBar(
  title: new Text(widget.title),
  brightness: Brightness.light, // or use Brightness.dark
),

请注意,这只会在白色和黑色状态文本颜色之间切换。

也许要使用更自定义的颜色,例如注释中说您可以查看SystemChrome类。

答案 1 :(得分:7)

当我不使用AppBar时,可以使用AnnotatedRegion更改颜色。

import 'package:flutter/services.dart';

...    

Widget build(BuildContext context) {
   return Scaffold(
      body: AnnotatedRegion<SystemUiOverlayStyle>(
         value: SystemUiOverlayStyle.light,                
         child: ...,
      ),
   );
}

答案 2 :(得分:3)

AnnotatedRegion帮助您在iOS上更改状态栏文本的颜色。

import 'package:flutter/services.dart';
...    

Widget build(BuildContext context) {
   return AnnotatedRegion<SystemUiOverlayStyle>(
         value: SystemUiOverlayStyle.dark,                
         child: ...,
   );
}

但是,如果您在Scaffold中有AppBar,则只有AnnotatedRegion无法正常工作。这是解决方法。

  Widget build(BuildContext context) {
    return AnnotatedRegion<SystemUiOverlayStyle>(
      value: SystemUiOverlayStyle.dark, // play with this
      child: Scaffold(
        appBar: AppBar(
          brightness: Brightness.light, // play with this
        ),
        body: Container(),
     );
  }

答案 3 :(得分:2)

@Antoine这个问题令我头疼。我使用statusbarColor插件https://pub.dartlang.org/packages/flutter_statusbarcolor将状态栏颜色更改为黑色。然后,我将应用栏的亮度设置为暗,因为它是深色背景。

root

答案 4 :(得分:2)

对于iOS和Android:

SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle.dark.copyWith( statusBarColor: Colors.white, // Color for Android statusBarBrightness: Brightness.dark // Dark == white status bar -- for IOS. ));

答案 5 :(得分:2)

我在为不同的屏幕设置不同的状态栏颜色时遇到问题。我正在使用 slivers 并且可以在 SliverAppBars 中像在普通 AppBars 中一样设置亮度(影响状态栏颜色)。

SliverAppBar(
  brightness: Brightness.light, //or Brightness.dark
  //...
);

SliverAppBar 的亮度,如果为空,默认为 AppBarTheme.brightness、ThemeData.appBarTheme 或 ThemeData.primaryColorBrightness,如果其中任何一个为空。

AppBarTheme.brightness 设置示例:

MaterialApp(
  //...
  theme: ThemeData(
    appBarTheme: AppBarTheme(brightness: Brightness.dark),
  ),
  //...
);

答案 6 :(得分:0)

不要使用AnnotatedRegion

<块引用>

应用不应将 AppBar 与自己的 [AnnotatedRegion] 括起来。

你应该使用:

AppBar(
  backwardsCompatibility: false,
  systemOverlayStyle: SystemUiOverlayStyle(statusBarColor: Colors.orange),
)

答案 7 :(得分:-1)

我使用flutter_statusbar_text_color插件https://pub.dev/packages/flutter_statusbar_text_color将状态栏文本颜色更改为黑色。