Android键盘导致状态栏重新出现

时间:2019-01-31 05:25:07

标签: dart flutter android-softkeyboard android-statusbar

我需要在我的应用中隐藏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中测试

2 个答案:

答案 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 叠加设置。