flutter - 单击 TextField 后小部件重建
问题描述
我有一个问题,当我单击 TextField 时,整个小部件会重新加载。我不希望这种情况发生。尝试了很多方法,但无法找到解决方案。我正在 Android 设备上运行该应用程序。
class Testextends StatefulWidget {
@override
_TestState createState() => _TestState();
}
class _TestState extends State<Test> {
final _search = TextEditingController();
static final GlobalKey<ScaffoldState> _scaffoldKey = new GlobalKey<ScaffoldState>();
@override
Widget build(BuildContext context) {
return Scaffold(
key: _scaffoldKey,
appBar: AppBar(
title: Container(
height: 45,
width: MediaQuery.of(context).size.width * 0.9,
child: Row(
children: <Widget>[
Expanded(
child: TextField(
decoration: InputDecoration(
focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.all(
Radius.circular(30.0),
),
borderSide: BorderSide(color: Colors.grey[400]),
),
border: OutlineInputBorder(
borderRadius: BorderRadius.all(
Radius.circular(30.0),
),
),
labelStyle: TextStyle(color: Colors.grey[400], fontSize: 15),
labelText: 'Search...',
),
controller: _search,
onSubmitted: (_) => search(),
),
),
],
),
),
),
body: Text('Test Body'),
);
}
}
谁能告诉我为什么会这样?
解决方案
我认为使用MediaQuery会导致这种行为,因为每次尺寸更改时 MediaQuery 都会重建小部件。键盘一打开,尺寸就会发生变化。
推荐阅读
- c++ - 使用 OpenCV c++ 查找下一个图像
- raspberry-pi - 为什么 Juypter notebook 不能在我的树莓派上运行
- angular - 路由到同一组件时重新显示加载
- reactjs - 想要在对象数组中保存(设置)状态
- typescript - 如何获取数组项的类型
- javascript - mapStateToProps 返回未定义
- ruby - Ruby Array sort_by 变量中的值
- java - 为什么@RequestHeader 不捕获过滤器中添加的自定义标头
- batch-file - 如何使用 Robocopy 将文件从多个子文件夹(未知名称)复制到一个文件夹?
- angular - Angular动态表单ngfor多提交?