我想在TabBarView中,当用户更改Tab时,动态更改键盘类型。我尝试了很多东西 autoFocus = true
,给 FocusNode()
对于每个 TextField
并对这些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();
});
}
}, ... )
我的TextField
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,
}
)
}
这解决了我的问题,但听起来像一个黑客。有人有更好的方法吗?
FocusScope.of(context).unfocus();
Future.delayed(Duration(milliseconds: 350)).then((value) {
FocusScope.of(context).requestFocus(inputFocus);
});
小于350毫秒不工作。