flutter设置statusbar状态栏的背景颜色和 APP(AppBar)内部颜色一致方法。

网上搜出来的方式都是在 dart中设置 statusbar透明,但是我试了几个作者提供的 语法都没法实现。

最后找到一种方法,那就是在

MainActivity.kt路径:android/app/src/main/kotlin/com/example/flutter_app/MainActivity.kt

package com.example.learn_flutter2

import io.flutter.embedding.android.FlutterActivity
//引入
import android.os.Build;
import android.os.Bundle;
class MainActivity: FlutterActivity() {
    //设置状态栏沉浸式透明(修改flutter状态栏黑色半透明为全透明)
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            window.statusBarColor = 0
        }
    }
}

如上加入 注释部分的代码即可解决flutter 状态栏和 APP内部一致。

如果你是 java。

如下解决:

package com.example.demo1;

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;

public class MainActivity extends FlutterActivity {
     @Override
     public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {
         GeneratedPluginRegistrant.registerWith(flutterEngine);
     }

     // 设置状态栏沉浸式透明(修改flutter状态栏黑色半透明为全透明)
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
             getWindow().setStatusBarColor(0);
         }
     }
}

我是 kt的代码,实测成功,java的 部分没有实测过,我想应该没问题。

以上方式还需要修改 Android 原生代码,后来找到了dart 实现的 代码:

第一步:引入

import 'package:flutter/services.dart';

引入后。

第二步:两种方式实现,二选一就行

1、在main中全局实现:

Future<void> main() async {
  runApp(MyApp());
  SystemUiOverlayStyle uiStyle = const SystemUiOverlayStyle(
        systemNavigationBarColor: const Color(0x00000000),
        systemNavigationBarDividerColor: null,
        statusBarColor: const Color(0x00000000),
        systemNavigationBarIconBrightness: Brightness.dark,
        statusBarIconBrightness: Brightness.dark,
        statusBarBrightness: Brightness.dark,
    );

    SystemChrome.setSystemUIOverlayStyle(uiStyle);
}

2、在每个页面分别实现:

    static SystemUiOverlayStyle uiStyle = const SystemUiOverlayStyle(
        systemNavigationBarColor: const Color(0x00000000),
        systemNavigationBarDividerColor: null,
        statusBarColor: const Color(0x00000000),
        systemNavigationBarIconBrightness: Brightness.dark,
        statusBarIconBrightness: Brightness.dark,
        statusBarBrightness: Brightness.dark,
    );

    static appUIStyle() {
        SystemChrome.setSystemUIOverlayStyle(uiStyle);
    }

然后在每个页面initState中调用 appUIStyle。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值