【发布时间】:2020-09-09 09:00:33
【问题描述】:
我想在用户更改 TabBarView 中的选项卡时动态更改键盘类型。我尝试了很多东西autoFocus = true,为每个TextField 提供FocusNode(),并为这些focusNode 取消焦点并请求焦点。这三个 TextField 的 FocusNode 相同。
我已经尝试过的事情
return TabBar(
onTap: (_) {
if (tabController.indexIsChanging) {
//here the input just unfocus
FocusScope.of(context).unfocus();
Future.delayed(Duration(seconds: 1)).then((v) {
FocusScope.of(context).requestFocus();
});
}
}, ... )
我的文本字段
Widget _buildTextField({
TextInputType keyboardType,
List<TextInputFormatter> inputFormatters,
}) {
return BlocBuilder<TransferBloc, TransferState>(
builder: (context, state) {
return TextField(
controller: inputController,
// focusNode: focusInput,
autofocus: true,
keyboardType: keyboardType,
inputFormatters: inputFormatters,
}
)
}
【问题讨论】:
-
很难从您的示例代码中看出,但如果每个视图中只有一个字段,
autofocus应该就足够了。 codepen.io/kuhnroyal/pen/NWGJWPO -
感谢您的示例,但不要解决我的问题。用户不必点击 TextField 即可打开键盘。应用程序应该自动完成。
-
当文本字段获得焦点时,键盘应该会自动打开。
-
是的,但用户不必点击 TextField 即可聚焦。当标签发生变化时应该自动完成
-
这就是我的示例中发生的情况,Web 中没有键盘,但该字段已聚焦。
标签: flutter focus textfield tabbar