Flutter 如何防止键盘在设置状态后关闭?
单击按钮时,条件会发生变化,Flutter 如何防止键盘在设置状态后关闭?,flutter,Flutter,单击按钮时,条件会发生变化,TextField小部件将从树中删除,但键盘也将关闭。即使文本字段消失,如何保持其打开 bool someCondition; initState(){ someCondition = true; } ... Row( children:[ someCondition ? TextField() : Text('How to keep keyboard open'), FlatButton(child: Text('Click
TextField
小部件将从树中删除,但键盘也将关闭。即使文本字段消失,如何保持其打开
bool someCondition;
initState(){
someCondition = true;
}
...
Row(
children:[
someCondition ? TextField() : Text('How to keep keyboard open'),
FlatButton(child: Text('Click me'), onPress: (){
setState(() {
someCondition = false;
});
})
],
)
您可以使用
可见性
小部件并维护其状态
class HomePage extends StatefulWidget {
@override
_HomePage createState() => _HomePage();
}
class _HomePage extends State<HomePage> {
bool someCondition = true;
@override
Widget build(BuildContext context) {
return Scaffold(
body: SafeArea(
child: Row(
children: <Widget>[
Expanded(
child: Stack(
children: <Widget>[
Visibility(
visible: someCondition,
maintainAnimation: true,
maintainState: true,
maintainSize: true,
child: TextField(),
),
if (!someCondition) const Text('How to keep keyboard open'),
],
),
),
FlatButton(
onPressed: () {
setState(() {
someCondition = !someCondition;
});
},
child: const Text('Click me'),
),
],
),
),
);
}
}
类主页扩展StatefulWidget{
@凌驾
_主页createState()=>\u主页();
}
类(扩展状态){
bool someCondition=true;
@凌驾
小部件构建(构建上下文){
返回脚手架(
正文:安全区(
孩子:排(
儿童:[
扩大(
子:堆栈(
儿童:[
可见度(
可见:某些条件,
对,,
国家:是的,
尺寸:对,
子项:TextField(),
),
如果(!someCondition)常量文本(“如何保持键盘打开”),
],
),
),
扁平按钮(
已按下:(){
设置状态(){
someCondition=!someCondition;
});
},
子:常量文本(“单击我”),
),
],
),
),
);
}
}
setState
重新运行构建函数,这有点像你的应用程序重新启动,因此我认为如果你用其他状态管理系统(比如bloc和redux…)来实现这一点会更好。可见性的魔力
对抗setState((){})