Flutter 設(shè)置沉浸式狀態(tài)欄(全局)

局部改變暫且沒有一起寫

改狀態(tài)欄顏色

頭部引入

import 'package:flutter/services.dart';

main頁面放在Widget build函數(shù)里

SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(statusBarColor: Colors.XXX));

使?fàn)顟B(tài)欄透明化

這里我查到有資料說是直接改顏色為transparent就可以,但我沒有起作用

SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(statusBarColor: Colors.transparent));

后來看到另一位回答里寫的方法起作用。

首先需要在flutter項目目錄下找到android主入口頁面MainActivity.kt或MainActivity.java,判斷一下版本號然后將狀態(tài)欄顏色修改設(shè)置成透明,因為他本身是黑色半透明。


image.png

在MainActivity.kt頁面新增如下代碼

//設(shè)置狀態(tài)欄沉浸式透明(修改flutter狀態(tài)欄黑色半透明為全透明)
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);
    }

    //設(shè)置狀態(tài)欄沉浸式透明(修改flutter狀態(tài)欄黑色半透明為全透明)
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            window.statusBarColor = 0
        }
    }
}

引自Flutter沉浸式透明狀態(tài)欄|flutter自定義凸起B(yǎng)ottomAppBar導(dǎo)航 - SegmentFault 思否


設(shè)置狀態(tài)欄字體顏色

注意這里只能改變狀態(tài)欄字體顏色為白色或者黑色

SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle.dark/light);
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容