zoukankan      html  css  js  c++  java
  • flutter 监测textInput失去焦点和得到焦点

    参考:https://blog.csdn.net/weixin_27013291/article/details/112715846

    1.创建FocusNode

    //创建FocusNode对象实例
     FocusNode focusNode = FocusNode();

    2.初始化函数中添加焦点监听

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



    //输入框焦点监测
    _focusNode.addListener((){
    if (!_focusNode.hasFocus) {
    print('失去焦点');

    }else{
    print('得到焦点');


    }
    });
    }
     

    3.在TextField中引用FocusNode

    new TextField(
    //引用FocusNode
      focusNode: focusNode,
    ),

    4.在页面Widget销毁时,释放focusNode

    //页面销毁
    @override
    void dispose() {
    super.dispose();
    //释放
      focusNode.dispose();
    }

    一般情况需要点击空白处失去焦点,写在当前页面的最顶处组件

    GestureDetector(
          behavior: HitTestBehavior.translucent,
          onTap: () {
    // 触摸收起键盘
            FocusScope.of(context).requestFocus(FocusNode());
          },
          child: Container()
    )

    常用方法

    //获取焦点
    void getFocusFunction(BuildContext context){
      FocusScope.of(context).requestFocus(focusNode);
    }
    
    //失去焦点
    void unFocusFunction(){
      focusNode.unfocus();
    }
    
    //隐藏键盘而不丢失文本字段焦点:
    void hideKeyBoard(){
      SystemChannels.textInput.invokeMethod('TextInput.hide');
    }
  • 相关阅读:
    FZU 2113 BCD Code 数位dp
    Gym 100917L Liesbeth and the String 规律&&胡搞
    Gym 100917C Constant Ratio 数论+暴力
    CF149D Coloring Brackets
    P4342 [IOI1998]Polygon
    P4316 绿豆蛙的归宿
    P1439 【模板】最长公共子序列
    Noip 2013 真题练习
    洛谷比赛 「EZEC」 Round 4
    P5024 保卫王国
  • 原文地址:https://www.cnblogs.com/lude1994/p/14307416.html
Copyright © 2011-2022 走看看