局部改变暂且没有一起写
改状态栏颜色
头部引入
import 'package:flutter/services.dart';
main页面放在Widget build函数里
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(statusBarColor: Colors.XXX));
使状态栏透明化
这里我查到有资料说是直接改颜色为transparent就可以,但我没有起作用
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(statusBarColor: Colors.transparent));
后来看到另一位回答里写的方法起作用。
首先需要在flutter项目目录下找到android主入口页面MainActivity.kt或MainActivity.java,判断一下版本号然后将状态栏颜色修改设置成透明,因为他本身是黑色半透明。
在MainActivity.kt页面新增如下代码
//设置状态栏沉浸式透明(修改flutter状态栏黑色半透明为全透明)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
window.statusBarColor = 0
}
}
完整MainActivity.kt代码如下:
package com.example.flutter_app///这里是你的项目注意别覆盖
import androidx.annotation.NonNull;
import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugins.GeneratedPluginRegistrant
//引入
import android.os.Build;
import android.os.Bundle;
class MainActivity: FlutterActivity() {
override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
GeneratedPluginRegistrant.registerWith(flutterEngine);
}
//设置状态栏沉浸式透明(修改flutter状态栏黑色半透明为全透明)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
window.statusBarColor = 0
}
}
}
引自Flutter沉浸式透明状态栏|flutter自定义凸起BottomAppBar导航 - SegmentFault 思否
设置状态栏字体颜色
注意这里只能改变状态栏字体颜色为白色或者黑色
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle.dark/light);