flutter - 键盘在较旧的 Android 版本上退出全屏模式
问题描述
我试图在我的应用程序中使用全屏,但我注意到在具有 android 8.1(API 27)的设备上,当用户打开键盘时,应用程序退出全屏模式并且除非重建 ui 否则不会恢复,是否有人有解决方案?
我还在 Android 7.1 (API 25) 上进行了测试,这个问题更容易处理,唯一没有回到全屏的是顶部栏,但是,下面的代码只能在新的 androids (API 28) 上完美运行+)
代码:
void main() {
runApp(MaterialApp(home: MyApp()));
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
SystemChrome.setEnabledSystemUIOverlays([]);
return Scaffold(
body: SafeArea(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Flexible(flex: 1, child: Text('Fullscreen test')),
Flexible(
flex: 1,
child: TextFormField(
controller: TextEditingController(),
),
),
Flexible(flex: 1, child: SizedBox())
],
)),
);
}
}
解决方案
你应该在initState
. 工作代码:
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
void main() {
runApp(MaterialApp(home: MyApp()));
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
@override
void initState() {
// TODO: implement initState
super.initState();
SystemChrome.setEnabledSystemUIOverlays([]);
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: SafeArea(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Flexible(flex: 1, child: Text('Fullscreen test')),
Flexible(
flex: 1,
child: TextFormField(
controller: TextEditingController(),
),
),
Flexible(flex: 1, child: SizedBox())
],
)),
);
}
}
推荐阅读
- objective-c - NSCollectionViewGridLayout 在单行中,可调整大小的集合项保持纵横比?
- terraform - 如何将逗号分隔的数组传递给 terraform v0.12.0 中的资源?
- r - 如何在不更改为整数数据类型的情况下读取“数字形式的字符串数据”?
- php - 运行服务器端 php 和 apache,我可以告诉浏览器在地址栏中显示另一个 URL,而无需重定向和重新加载,也无需 javascript?
- java - 使用 OpenId AppAuth-Android 库时具有隐式意图的 PendingIntent 返回取消的异常
- java - 用于多个并行执行的通用全局目录中的 Maven 本地存储库
- pine-script - 获取我设置的一个周期的最大值和最小值
- python - 在本地下载和使用 Python 库
- c - libc6:断言宏定义中的逗号运算符
- google-apps-script - 如何减少我的 Google Apps 脚本使用的“计算机时间”?