bagaimana cara mengubah jenis keyboard di TextField saat mengubah Tab?

Saya ingin mengubah jenis keyboard dinamis ketika pengguna mengubah Tab di TabBarView. Saya Mencoba banyak hal autoFocus = true, memberikan FocusNode() untuk setiap TextField dan tidak fokus dan meminta fokus untuk focusNode ini. FocusNode yang sama untuk ketiga TextField ini.

masukkan deskripsi gambar di sini

Hal-hal yang sudah saya coba

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();
          });

        }
      }, ... )

Bidang Teks saya

 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,
}
)
}

person Rafael Menicucci    schedule 22.05.2020    source sumber
comment
Sulit membedakannya dari kode contoh Anda, tetapi jika hanya ada satu bidang di setiap tampilan, autofocus sudah cukup. codepen.io/kuhnroyal/pen/NWGJWPO   -  person kuhnroyal    schedule 22.05.2020
comment
terima kasih atas contohnya, tapi jangan selesaikan masalah saya. Pengguna tidak perlu mengetuk TextField untuk membuka keyboard. Aplikasi harus melakukannya secara otomatis.   -  person Rafael Menicucci    schedule 22.05.2020
comment
Keyboard akan terbuka secara otomatis ketika bidang teks difokuskan.   -  person kuhnroyal    schedule 22.05.2020
comment
ya, tapi pengguna tidak perlu mengetuk TextField untuk fokus. Ini harus dilakukan secara otomatis ketika tab berubah   -  person Rafael Menicucci    schedule 22.05.2020
comment
Itulah yang terjadi pada contoh saya, tidak ada keyboard di Web tetapi bidangnya terfokus.   -  person kuhnroyal    schedule 22.05.2020
comment
terima kasih atas waktu Anda @kuhnroyal tetapi saya mengujinya di simulator dan keyboard tidak menyala secara otomatis.   -  person Rafael Menicucci    schedule 22.05.2020


Jawaban (1)


ini menyelesaikan masalah saya tetapi terdengar seperti peretasan. Apakah seseorang memiliki pendekatan yang lebih baik?

FocusScope.of(context).unfocus();

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

kurang dari 350 milidetik tidak berfungsi. :/

person Rafael Menicucci    schedule 22.05.2020