我需要在我的应用中隐藏Android状态栏,以便我使用以下代码
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
main() {
SystemChrome.setEnabledSystemUIOverlays([]);
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Center(child: TextField()), backgroundColor: Colors.orange));
}
}
我在屏幕上显示一个textfield
,因此每当Android键盘打开时,状态栏就会重新出现。
我已经尝试了多种Android设备,但遇到了相同的错误。
这真的是框架中的错误吗?还是我做错了什么?
我在下面附加了一个简短的视频链接以显示该错误
https://drive.google.com/file/d/19qs5Rsrfc_G1oN5kbxgKvYQAXpTr8RZx/view?usp=sharing
我尚未在iOS
中测试
答案 0 :(得分:1)
请分享一些代码。我尝试在SystemChrome.setEnabledSystemUIOverlays([]);
中添加initState()
,并且有一个文本字段,它工作正常。
答案 1 :(得分:0)
我所做的是在显示键盘后,延迟 2(医生说 1)秒,然后再次调用 setEnabledSystemUIOverlays
。
Future.delayed(Duration(seconds: 2)).then((value) => SystemChrome.setEnabledSystemUIOverlays([]));
根据:https://api.flutter.dev/flutter/services/SystemChrome/setEnabledSystemUIOverlays.html
<块引用>当键盘变得可见时,它将启用导航栏和状态栏系统 UI 覆盖。当键盘关闭时,Android 不会恢复之前的 UI 可见性设置,并且在键盘关闭后 1 秒内无法更改 UI 可见性,以防止恶意软件锁定用户的导航按钮。
<块引用>要在输入文本后重新获得“全屏”,应在 1 秒延迟后重新设置 UI 覆盖。这可以通过 restoreSystemUIOverlays 或再次调用来实现。否则,只有当应用失去焦点并重新获得焦点时,才会自动恢复原始 UI 叠加设置。