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((){})