Flutter 设置沉浸式状态栏(全局)

局部改变暂且没有一起写

改状态栏颜色

头部引入

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,判断一下版本号然后将状态栏颜色修改设置成透明,因为他本身是黑色半透明。


image.png

在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);

你可能感兴趣的:(Flutter 设置沉浸式状态栏(全局))