答案 0 :(得分:45)
SystemChrome.setEnabledSystemUIOverlays([])
应该做你想做的事。
您可以使用SystemChrome.setEnabledSystemUIOverlays(SystemUiOverlay.values)
将其恢复。
使用
导入它import 'package:flutter/services.dart';
答案 1 :(得分:42)
import 'package:flutter/services.dart';
SystemChrome.setEnabledSystemUIOverlays([SystemUiOverlay.bottom])
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(
statusBarColor: Colors.transparent,
));
SystemChrome.setEnabledSystemUIOverlays(SystemUiOverlay.values);
答案 2 :(得分:11)
对于单页(在页面文件中):
@override
void initState() {
SystemChrome.setEnabledSystemUIOverlays([SystemUiOverlay.bottom]);
super.initState();
}
@override
void dispose() {
SystemChrome.setEnabledSystemUIOverlays(
[SystemUiOverlay.top, SystemUiOverlay.bottom]);
super.dispose();
}
对于所有页面(在main.dart中):
void main() {
SystemChrome.setEnabledSystemUIOverlays([SystemUiOverlay.bottom]);
runApp(MaterialApp(
debugShowCheckedModeBanner: false,
theme: ThemeData(fontFamily: 'Poppins'),
home: SplashScreen()));
}
别忘了import 'package:flutter/services.dart'
答案 3 :(得分:6)
您可以使用SystemChrome.setEnabledSystemUIOverlays([])
隐藏并使用SystemChrome.setEnabledSystemUIOverlays(SystemUiOverlay.values)
将其重新带回。
但是,目前会有轻微的灰色区域,目前还没有解决方法。隐藏状态栏时,应用栏的高度保持不变。
请参阅github问题:https://github.com/flutter/flutter/issues/14432
答案 4 :(得分:1)
第一步:在软件包下面导入
import 'package:flutter/services.dart';
Step2:将以下代码添加到您的类初始化状态中,如下所示
@override
void initState() {
// TODO: implement initState
super.initState();
SystemChrome.setEnabledSystemUIOverlays([]);
}
答案 5 :(得分:1)
i:隐藏状态栏:
SystemChrome.setEnabledSystemUIOverlays([SystemUiOverlay.bottom]);
ii:使用SafeArea Widget可以确保您的应用程序不占用状态栏区域。
@override
Widget build(BuildContext context) {
return Scaffold(
body: SafeArea(
child: Container(
child: Text('Do not take status bar area on screen!'),
),
);
}
答案 6 :(得分:0)
乔纳·威廉姆斯(Jonah Williams)的这一评论在某些情况下可能也会有所帮助 https://github.com/flutter/flutter/issues/24472#issuecomment-440015464 如果您不希望AppBar覆盖状态栏颜色。
您无法为应用程序栏提供状态栏颜色,但是您可以 创建自己的带注释的区域。现在还不是很直观 但是您可以使用
Folder
覆盖子带注释的区域 由应用栏创建。在某个地方,也许是脚手架的孩子:
sized: false
请注意,并非所有的Android版本都支持状态栏颜色或图标 亮度。请参阅SystemUiOverlayStyle上的文档以了解 注意事项。
答案 7 :(得分:0)
您可以在主要功能中添加以下代码以隐藏状态栏。
IN
答案 8 :(得分:0)
导航到AndroidManifest.xml并使用此主题
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
答案 9 :(得分:0)
首先将SystemChrome.setEnabledSystemUIOverlays([]);
添加到您的Main函数中。
这会留下一个灰色的区域,如先前的答案所述。
对此我有一个简单的解决方法(只是一种解决方法,尽管在大多数情况下都可以使用)。
在AppBar()
中只需添加
backgroundColor: Colors.transparent,
elevation: 0.0,
我希望这对您有帮助
答案 10 :(得分:0)
答案 11 :(得分:0)
要实现此功能,您将需要 Flutter 服务 API。
实现它的示例步骤:
package:flutter/services.dart
。SystemChrome.setEnabledSystemUIOverlays([SystemUiOverlay.bottom])
放在有状态小部件的 initState 方法中。SystemChrome.setEnabledSystemUIOverlays([SystemUiOverlay.top, SystemUiOverlay.bottom])
放在有状态小部件的 dispose 方法中,以在您从该屏幕返回时重新启用状态栏。示例代码:
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: MyApp(),
);
}
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
@override
void initState() {
SystemChrome.setEnabledSystemUIOverlays([SystemUiOverlay.bottom]);
super.initState();
}
@override
void dispose() {
SystemChrome.setEnabledSystemUIOverlays([SystemUiOverlay.top,SystemUiOverlay.bottom]);
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Sample App'),
),
body: Center(
child: Container(
child: Text('Demo Screen.'),
),
),
);
}
}
注意事项:
SystemChrome.setEnabledSystemUIOverlays([SystemUiOverlay.top])
放在小部件的 build 方法中不是一个好主意,因为每次你的小部件重建时都会执行 build 方法,这会损害你的应用性能,并可能导致奇怪的错误,比如出现和消失的状态栏或底部导航。SystemChrome.restoreSystemUIOverlays()
来防止这种情况发生或使用 {{1} 重新设置} 你可以在这里找到更多信息https://api.flutter.dev/flutter/services/SystemChrome/setEnabledSystemUIOverlays.htmlSystemChrome.setEnabledSystemUIOverlays([SystemUiOverlay.bottom])
是异步的