如何在Flutter应用中隐藏Android状态栏?
Answers:
SystemChrome.setEnabledSystemUIOverlays([])
应该做你想做的。
您可以将其带回SystemChrome.setEnabledSystemUIOverlays(SystemUiOverlay.values)
。
使用导入
import 'package:flutter/services.dart';
SystemChrome.setEnabledSystemUIOverlays([SystemUiOverlay.bottom]);
您可以使用SystemChrome.setEnabledSystemUIOverlays([])
隐藏SystemChrome.setEnabledSystemUIOverlays(SystemUiOverlay.values)
并将其重新带回。
但是,目前会有少量灰色区域,目前还没有针对此问题的解决方法。隐藏状态栏时,应用栏的高度保持不变。
参见github问题:https : //github.com/flutter/flutter/issues/14432
对于单页(在页面文件中):
@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'
您可以在主要功能中添加以下代码以隐藏状态栏。
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(
statusBarColor: Colors.transparent,
));
如果您不希望AppBar覆盖状态栏颜色,则乔纳·威廉姆斯(Jonah Williams)的评论在某些情况下也可能会有所帮助 https://github.com/flutter/flutter/issues/24472#issuecomment-440015464
您无法为应用程序栏提供状态栏颜色,但可以创建自己的带注释区域。现在还不是很直观,但是您可以
sized: false
用来覆盖由应用栏创建的带有子注释的区域。某个地方,也许是脚手架的孩子:
Scaffold( body: AnnotatedRegion<SystemUiOverlayStyle>( value: const SystemUiOverlayStyle(...), sized: false, child: ... ) );
请注意,并非所有的Android版本都支持状态栏颜色或图标亮度。注意事项,请参阅SystemUiOverlayStyle上的文档。
步骤1:导入以下套件
import 'package:flutter/services.dart';
步骤2:将以下代码添加到您的类初始化状态,如下所示
@override
void initState() {
// TODO: implement initState
super.initState();
SystemChrome.setEnabledSystemUIOverlays([]);
}