簡體   English   中英

調用 setState 時鍵盤關閉

[英]Keyboard dismissing when setState is called

當 TextFormField 有焦點或沒有焦點時,我想在 Scaffold 中隱藏/顯示一些小部件。

我已經設法通過將 TextField 包裝在 Focus 小部件中來做到這一點,但是每當我點擊它開始輸入小部件時,我試圖隱藏的小部件就會消失,但鍵盤會失去焦點,直到我第二次點擊 TextField。

任何想法為什么會發生這種情況以及如何防止它?

您可以使用flutter_keyboard_visibility package:

有幾種方法可以用它構建你的 Widget 樹,比如單獨使用 boolean:

    // Add new variable for keyboard in your Stateful widget
    bool keyboardIsVisible = false;

    // Add listener at initState
      @override
      void initState() {
        super.initState();

        KeyboardVisibilityNotification().addNewListener(
          onChange: (bool visible) {
          keyboardIsVisible = visible;
          setState(() {});
      },
    );
  }

或者您可以使用他們的構建器小部件:

    import 'package:flutter_keyboard_visibility/flutter_keyboard_visibility.dart';

/// In any of your widgets...
@override
Widget build(BuildContext context) {
  return KeyboardVisibilityBuilder(
    builder: (context, isKeyboardVisible) {
      return Text(
        'The keyboard is: ${isKeyboardVisible ? 'VISIBLE' : 'NOT VISIBLE'}',
      );
    }
  );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM