美文网首页
FLutter踩坑之输入框

FLutter踩坑之输入框

作者: 机智的黑猫 | 来源:发表于2019-07-30 12:23 被阅读0次

    最近开始入坑flutter,正好遇到了一个新需求,响应国家号召的青少年模式。因为页面简单没有复杂UI也没什么网络请求,特别适合作为实验项目接入原生工程,在说服了iOS的同事之后准备开工。
    开始一切都很顺利,结果在处理输入框的时候遇到了一个问题。

     TextField(
                    controller: pwdController,
                    letterSpace: 38,
                    textSize: 30,
                    onChanged: (it) => {judgeState(context, pwdController)},
    

    在我调用pwdController.clear()方法之后onChanged触发了n次并且数据并不是空字符。

      /// Set the [value] to empty.
      ///
      /// After calling this function, [text] will be the empty string and the
      /// selection will be invalid.
      ///
      /// Calling this will notify all the listeners of this [TextEditingController]
      /// that they need to update (it calls [notifyListeners]). For this reason,
      /// this method should only be called between frames, e.g. in response to user
      /// actions, not during the build, layout, or paint phases.
      void clear() {
        value = TextEditingValue.empty;
      }
    

    看了下文档发现这个方法不应该在frames里调用。

    于是在调用出加了一层

      SchedulerBinding.instance.addPostFrameCallback(
                (it) => {pwdController.clear()});
    

    问题解决。

    总结,所有需要在帧之间调用的方法目前看起来都可以通过 SchedulerBinding.instance.addPostFrameCallback来实现延迟到下一帧之前调用。

    相关文章

      网友评论

          本文标题:FLutter踩坑之输入框

          本文链接:https://www.haomeiwen.com/subject/scvgrctx.html