Flutter状态栏透明
Flutter Status Bar transparent
如何使状态和选项栏(底部)透明?
想了很多办法还是黑底白字
这是我已经实现的代码:
Future main() async {
WidgetsFlutterBinding.ensureInitialized();
...
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(
systemStatusBarContrastEnforced: true,
statusBarColor: Colors.transparent,
systemNavigationBarColor: Colors.transparent,
systemNavigationBarDividerColor: Colors.transparent,
systemNavigationBarIconBrightness: Brightness.light,
statusBarIconBrightness: Brightness.light));
SystemChrome.setEnabledSystemUIMode(SystemUiMode.edgeToEdge,
overlays: [SystemUiOverlay.top, SystemUiOverlay.bottom]);
...
runApp(...)
在我的 Material 应用中:
return MaterialApp.router(
theme: ThemeData(
appBarTheme: AppBarTheme(
//systemOverlayStyle: SystemUiOverlayStyle.light,
backgroundColor: Colors.transparent),
),
color: Colors.transparent,
...
我知道 AppBar 和状态栏不一样(只是想包括它)。
提前致谢。
更新:
我试图删除 Safearea,它显然与状态和导航栏冲突。结果是:
到现在还不是很透明,底部也乱了。有什么想法吗?
假设隐藏没问题:
import 'package:flutter/services.dart';
隐藏所有内容:
SystemChrome.setEnabledSystemUIMode(SystemUiMode.leanBack);
只隐藏底部:
SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, overlays: [
SystemUiOverlay.bottom
]);
把它们带回来:
@override
void dispose() {
super.dispose();
SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, overlays: SystemUiOverlay.values); // to re-show bars
}
归功于此 。
我最近也遇到了这个问题。
我的解决方案是
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(
statusBarColor: Colors.transparent,
systemNavigationBarColor: Colors.transparent,
systemNavigationBarIconBrightness: Brightness.light
));
在我的例子中,safearea 干扰了使它仍然显示黑色和白色文本的更改。我建议您也在物理设备上进行测试。
正如 Frank Nike 所建议的,SafeArea 小部件与
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(
statusBarColor: Colors.transparent,
systemNavigationBarColor: Colors.transparent,
systemNavigationBarIconBrightness: Brightness.light
));
因此,为我解决问题的方法是完全删除 SafeArea 并设置:
SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual,
overlays: [SystemUiOverlay.top, SystemUiOverlay.bottom]);
如何使状态和选项栏(底部)透明?
想了很多办法还是黑底白字
这是我已经实现的代码:
Future main() async {
WidgetsFlutterBinding.ensureInitialized();
...
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(
systemStatusBarContrastEnforced: true,
statusBarColor: Colors.transparent,
systemNavigationBarColor: Colors.transparent,
systemNavigationBarDividerColor: Colors.transparent,
systemNavigationBarIconBrightness: Brightness.light,
statusBarIconBrightness: Brightness.light));
SystemChrome.setEnabledSystemUIMode(SystemUiMode.edgeToEdge,
overlays: [SystemUiOverlay.top, SystemUiOverlay.bottom]);
...
runApp(...)
在我的 Material 应用中:
return MaterialApp.router(
theme: ThemeData(
appBarTheme: AppBarTheme(
//systemOverlayStyle: SystemUiOverlayStyle.light,
backgroundColor: Colors.transparent),
),
color: Colors.transparent,
...
我知道 AppBar 和状态栏不一样(只是想包括它)。 提前致谢。
更新:
我试图删除 Safearea,它显然与状态和导航栏冲突。结果是:
到现在还不是很透明,底部也乱了。有什么想法吗?
假设隐藏没问题:
import 'package:flutter/services.dart';
隐藏所有内容:
SystemChrome.setEnabledSystemUIMode(SystemUiMode.leanBack);
只隐藏底部:
SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, overlays: [
SystemUiOverlay.bottom
]);
把它们带回来:
@override
void dispose() {
super.dispose();
SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, overlays: SystemUiOverlay.values); // to re-show bars
}
归功于此
我最近也遇到了这个问题。
我的解决方案是
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(
statusBarColor: Colors.transparent,
systemNavigationBarColor: Colors.transparent,
systemNavigationBarIconBrightness: Brightness.light
));
在我的例子中,safearea 干扰了使它仍然显示黑色和白色文本的更改。我建议您也在物理设备上进行测试。
正如 Frank Nike 所建议的,SafeArea 小部件与
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(
statusBarColor: Colors.transparent,
systemNavigationBarColor: Colors.transparent,
systemNavigationBarIconBrightness: Brightness.light
));
因此,为我解决问题的方法是完全删除 SafeArea 并设置:
SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual,
overlays: [SystemUiOverlay.top, SystemUiOverlay.bottom]);