【问题标题】:Hide keyboard when click on device back button in flutter在颤动中单击设备后退按钮时隐藏键盘
【发布时间】:2021-03-23 14:49:36
【问题描述】:

当键盘打开时,我点击设备后退按钮键盘没有隐藏它正在导航到上一页。

【问题讨论】:

标签: flutter dart


【解决方案1】:

FocusScope.of(context).unfocus() 将关闭键盘,设备返回按钮由 WillPopScope 控制,你可以这样做

WillPopScope(
      onWillPop: () async{
        FocusScope.of(context).unfocus();
        return false;
      },
        child: Scaffold(.....)
    );

【讨论】:

  • 如果键盘未打开,则导航到上一页
  • 只需添加一个Navigator.pop(context) 您可以使用MediaQuery.of(context).viewInsets.bottom 来检查键盘当前是打开还是关闭。
【解决方案2】:

首先,您可以使用keyboard_visibility 包来有效地执行此操作,我已经使用过它,它的作用就像魅力一样。

安装

dependencies:
  keyboard_visibility: ^0.5.2

用法

import 'package:keyboard_visibility/keyboard_visibility.dart';

bool keyBoardState;

@protected
void initState() {
  super.initState();

  KeyboardVisibilityNotification().addNewListener(
    onChange: (bool visible) {
      print(visible);
      keyBoardState = visible;
    },
  );
}

现在在您调用其他页面之前,首先检查 keyBoardState 是真还是假,然后执行您的工作。

【讨论】:

    【解决方案3】:

    FocusScope.of(context).isFirstFocus 当键盘获得焦点时返回 true,这仅在您的键盘打开时有效。

    if (FocusScope.of(context).isFirstFocus) {
         FocusScope.of(context).unfocus();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-06
      • 2012-11-15
      • 1970-01-01
      • 2017-05-23
      • 1970-01-01
      • 2017-03-08
      • 1970-01-01
      • 2017-09-20
      相关资源
      最近更新 更多