【发布时间】:2020-09-22 04:58:01
【问题描述】:
最近几天我尝试实施我在 stackoverflow 上找到的修复程序,但它们都不起作用。我认为这是不正常的故事情节造成的:
- 我有一个带有文本字段的屏幕
- 通过单击 FloatingActionButton 会出现一个弹出窗口,用户可以在其中单击按钮
- 通过单击按钮,我将 bool 设置为 true(例如:textfield1 = true)
- 这会在我的屏幕上触发一个 TextField ( if (textfield1== true) {TextField()} 这一切都很好,问题是,我想改变对这个新 TextField 的关注:
所以我添加了这个:
textfield1=true; _focusTextField1();
与
void _focusTextField1() { FocusScope.of(context).requestFocus(textfield1Node);}
现在 TextField 有了焦点(边框变为蓝色),但 textmarker 没有出现(我希望 textmarker 是正确的词,我的意思是这个“|”也会触发键盘。) 我必须单击按钮(FloatingActionButton--> Popup-->Button)两次,才能触发此文本标记/键盘。 比我找到这个解决方案:
void initState() {
super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) => _focusTextField1());
这也行不通。下一个问题是,我必须为用户可以创建的每个可能的新 TextField 实现这个addPostFrameCallback,但是在addPostFrameCallback 的描述中,它说只有最后一个回调会被触发,意思是:每次我创建一个新的 TextField,在 initState() 中具有最后一个回调的 TextField 将被聚焦。
感谢您的帮助! (我提供了所有相关代码,我想如果我提供所有代码会很混乱)
【问题讨论】:
-
我理解正确吗,您想在
initState()中调用_focusTextField1()但不起作用 -
@MohamedSayed 不。当用户单击同时设置
textField1=true的按钮时,我调用_fcousTextField1()/ 创建新的TextField。因为这种聚焦新 TextField 的方法不起作用,所以我找到了在 initState 中调用WidgetsBinding.instance.addPostFrameCallback((_) => _focusTextField1());的方法
标签: flutter flutter-layout textfield