如何在TextField中改变键盘类型时改变Tab?

问题描述 投票:0回答:1

我想在TabBarView中,当用户更改Tab时,动态更改键盘类型。我尝试了很多东西 autoFocus = true,给 FocusNode() 对于每个 TextField 并对这些FocusNode进行解焦和请求聚焦。这三个TextField的FocusNode是一样的。

enter image description here

我已经尝试过的事情

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,
}
)
}
flutter focus textfield tabbar
1个回答
0
投票

这解决了我的问题,但听起来像一个黑客。有人有更好的方法吗?

FocusScope.of(context).unfocus();

Future.delayed(Duration(milliseconds: 350)).then((value) {
       FocusScope.of(context).requestFocus(inputFocus);
});

小于350毫秒不工作。

© www.soinside.com 2019 - 2024. All rights reserved.