gpt4 book ai didi

flutter - 移除键盘时 TextField 中的文本消失

转载 作者:IT王子 更新时间:2023-10-29 06:45:20 33 4
gpt4 key购买 nike

当我从 View 中移除键盘时,在我的 TextField 小部件中输入的文本消失了。

有两个TextField,标题和描述。上述问题只发生在标题上,描述上没有。

这是 build 方法的相关摘录:

@覆盖

    Widget build(BuildContext context) {
_note = widget._note; // This is coming from StatefulWidget Class above
TextStyle textStyle = Theme.of(context).textTheme.title;
_titleController.text = _note.title;
_descriptionController.text = _note.description;

return Scaffold(
body: ListView(
children: <Widget>[
Padding(
padding: EdgeInsets.all(15.0),
child: TextField(
style: textStyle,
controller: _titleController,
decoration: InputDecoration(
labelText: "Title",
labelStyle: textStyle,
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(5.0))),
),
),
Padding(
padding: EdgeInsets.all(15.0),
child: TextField(
style: textStyle,
controller: _descriptionController,
decoration: InputDecoration(
labelText: "Description",
labelStyle: textStyle,
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(5.0))),
),
),
...
}
}

Keyboard shown 的截图& removed .

最佳答案

发生这种情况是因为您在 build 方法中设置了文本。这个 build 方法可以在任何时候被调用,例如当键盘收缩时,因为 UI 需要对此使用react。
这意味着您应该将此代码移动到 initState :

@override
void initState() {
_note = widget._note;
_titleController.text = _note.title;
_descriptionController.text = _note.description;
super.initState();
}

initState 仅在您的小部件插入构建树时调用一次。

我不确定为什么这只发生在其中一个 TextFields 上。我假设您在其他地方使用 TextController 来设置 Note 的内容,这可能会导致此行为。
此外,您应该避免在 StatefulWidget (widget._note) 中为 _note 使用前导下划线 _,因为您可以从您的 State 访问它。

关于flutter - 移除键盘时 TextField 中的文本消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55672971/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com