美文网首页Flutter学习
flutter:如何判断 widget 是否正在绘制

flutter:如何判断 widget 是否正在绘制

作者: 李小轰 | 来源:发表于2021-06-19 14:28 被阅读0次

    直接上代码:

    //flutter调度阶段是否为 build/layout/paint
    bool get isPersistentCallbacks =>
          SchedulerBinding.instance?.schedulerPhase ==
          SchedulerPhase.persistentCallbacks;
    

    使用场景,例如重写 OverLayEntry 中 markNeedsBuild 方法

    @override
      void markNeedsBuild() {
        if (isPersistentCallbacks) {
          SchedulerBinding.instance?.addPostFrameCallback((_) {
            super.markNeedsBuild();
          });
        } else {
          super.markNeedsBuild();
        }
      }
    
    课后知识整理

    Flutter中有几个调度阶段:

    • transientCallbacks : 主要处理动画计算,动画状态的更新
    • midFrameMicrotasks : 处理transientCallbacks阶段触发的Microtasks,啥是Microtasks
    • persistentCallbacks : 主要在下一帧之前,做一些清理工作或者准备工作
    • idle : 不产生Frame的空闲期,可以处理Tasks(由SchedulerBinding.scheduleTask触发),microtasks(由scheduleMicrotask触发),定时器的回调,响应事件处理(例如:用户的输入

    相关文章

      网友评论

        本文标题:flutter:如何判断 widget 是否正在绘制

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