flutter - 在 Flutter 中使用 OrientationBuilder 打开键盘时如何避免方向更改?
问题描述
在 Flutter 中使用OrientationBuilder打开键盘时如何避免方向更改?
事实上,当键盘出现时,即使我们不旋转手机,OrientationBuilder 的方向属性也会变为横向。
图片:
代码 :
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: OrientationBuilder(builder: (context, orientation) {
var _children = [
Expanded(
child: Center(
child: Text('Orientation : $orientation',
textAlign: TextAlign.center))),
Flexible(
child: Container(color: Colors.blue, child: TextField())),
Flexible(child: Container(color: Colors.yellow)),
];
if (orientation == Orientation.portrait) {
return Column(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: _children);
} else {
return Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: _children);
}
})),
);
}
}
解决方案
使用 OrientationBuilder 打开键盘时如何避免方向变化,将resizeToAvoidBottomInset设置为false
in Scaffold
小部件;
图片 :
代码:
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
resizeToAvoidBottomInset: false, // Here
body: SafeArea(
child: Padding(
padding: const EdgeInsets.all(20.0),
child: OrientationBuilder(builder: (context, orientation) {
return Column(
children: [
Text('Orientation = $orientation',
style: TextStyle(
fontSize: 20, fontWeight: FontWeight.bold)),
TextField(
decoration: InputDecoration(
hintText: 'tap me',
),
)
],
);
}),
),
)),
);
}
}
推荐阅读
- python - 致密层。没有TF的python中的网络
- swift - 上下滑动以将 ARKit 叠加层移入和移出
- selenium - Selenium Firefox 打开下载文件的首选项
- python - pymsteams 代码中的 requests.exception.ConnectionError
- swift - NSCollectionView 自定义布局奇怪的行为
- algorithmic-trading - 获取图表上的警报通知 - tradingview
- angular - 浏览器关闭一段时间后的oidc-client-js我必须在移动浏览器中重新登录
- reactjs - 为什么 GraphQL 输入类型会破坏应用程序
- python - psycopg2.errors.NotNullViolation:在 Odoo 中创建 ir.cron 模型时出错
- r - 是否可以为空第一个变量值并在 R 中制作 igraph?