gpt4 book ai didi

flutter - 无法以编程方式将焦点设置到 ExpansionTile 内的文本字段

转载 作者:行者123 更新时间:2023-12-04 10:29:09 25 4
gpt4 key购买 nike

我有一个 ExpansionTileTextField当用户展开磁贴时,尝试将焦点设置到此文本字段。但由于某些原因,我无法让它工作。
这是代码:

ExpansionTile(
key: PageStorageKey<String>("notes_key"),
title: Text(
"Notes",
style: TextStyle(color: Colors.indigo),
),
onExpansionChanged: (expanded){
if(expanded){
FocusScope.of(context).requestFocus(_notesFocusNode);
_notesController.value = _notesController.value.copyWith(text: _notes);
} else {
_notesFocusNode.unfocus();
}
},
children: <Widget>[
Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Expanded(
child: TextField(
decoration: InputDecoration(
border: InputBorder.none,
),
textInputAction: TextInputAction.newline,
style: TextStyle(color: Colors.black),
keyboardType: TextInputType.multiline,
focusNode: _notesFocusNode,
controller: _notesController,
key: PageStorageKey("notes_field_key"),
minLines: 1,
maxLines: null,
onChanged: (value) => _notes = value,
),
),
IconButton(
icon: Icon(Icons.done),
color: Colors.teal,
onPressed: () => _notesFocusNode.unfocus(),
),
],
),
],
)

任何帮助表示赞赏。

对于更大的上下文,文本字段不在任何表单内。提供的代码段位于较大的代码段内,并被包裹在 ListView 中。 .在我看来,可能我需要一些父级焦点范围?

最佳答案

TextFormField尚不能获取 Focus当您展开 Tile .它仅在动画开始几毫秒后可用。由于您无法知道动画何时完成,您可以通过添加延迟来解决。我建议至少 200毫秒,以便动画不会交错,但 TextFormField获得焦点:

Future.delayed(Duration(milliseconds: 200), (){
FocusScope.of(context).requestFocus(_notesFocusNode);
});

关于flutter - 无法以编程方式将焦点设置到 ExpansionTile 内的文本字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60491422/

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