flutter - 设置状态栏字体颜色的几种方式

10,435 阅读1分钟

flutter 设置状态栏颜色、背景色的几种方式和实现

SystemChrome

先引入

import 'package:flutter/services.dart';

一般编辑器都会有智能的补全,比如安卓特别喜欢的IDEA,vs code的Dart插件也有这个功能,鼠标放在报错的地方,然后选择quick fix就会自动添加依赖;

本来这个小功能不应该写一个单独的文章,但是因为为了大家找起来方便就单独开了,可能大家网上也一搜一大把,但是我希望我这个成为一个入门系列,包含一个最基本的应用必须学的东西,嘻嘻

正题

开始设置

设置状态栏颜色

SystemUiOverlayStyle systemUiOverlayStyle = SystemUiOverlayStyle(statusBarColor: Colors.transparent,statusBarIconBrightness:Brightness.dark);
SystemChrome.setSystemUIOverlayStyle(systemUiOverlayStyle);

其他还有很多 语法

(new) SystemUiOverlayStyle SystemUiOverlayStyle({Color systemNavigationBarColor, Color systemNavigationBarDividerColor, Brightness systemNavigationBarIconBrightness, Color statusBarColor, Brightness statusBarBrightness, Brightness statusBarIconBrightness})

格式化的参数

const SystemUiOverlayStyle({
    this.systemNavigationBarColor,
    this.systemNavigationBarDividerColor,
    this.systemNavigationBarIconBrightness,
    this.statusBarColor,
    this.statusBarBrightness,
    this.statusBarIconBrightness,
  });

这时候你可能会想,背景色怎么设计,嘿嘿,设置不了,不过可以设置透明度,安卓默认是50%,flutter默认是100%;

但是想要背景色呢,那就修改body咯,因为这是全浸式的。

效果图

(安卓好像是4.4开始才有全浸式,这真是一个伟大的设计,背景就可以是图像咯)

AppBar

脚手架里面设置appbar

brightness: Brightness.light,
Scaffold(
    appBar: AppBar(
      brightness: Brightness.light,
      title: Text('注册'),
    ),
)

不过,如果用不到appBar的话,就需要下面这种方式,比如登陆界面就不需要上面的帽子了。

AnnotatedRegion

AnnotatedRegion Widget可以实现只修改状态栏字体颜色

value: SystemUiOverlayStyle.dark
AnnotatedRegion<SystemUiOverlayStyle>(
      value: SystemUiOverlayStyle.dark,
      child: new Scaffold(
        ...代码
      )
)

相关链接

api.flutter.dev/flutter/ser…

--END--