网上搜出来的方式都是在 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。