Flutter TTI可交互时间

346 阅读1分钟

TTI可交互时间是如何检测的?

创建容器后startTime为开始时间,在WidgetBinding.instance?.addPostFrameCallBack首帧渲染后创建一Timer 50ms检测一次检测范围(默认除去导航栏部分)是否存在超过一个Text,如果存在将本次检测时间减去startTime为TTI时间,如果不存在继续检测知道超时。

scanChildElement(Element element) {
  element.visitChildElements((childElement) {
    if (texts.length > 1) return;
    final widget = childElement.widget;
    if (widget is Text) {
      texts.add(widget.data ?? '');
    }
  });
}

如何优化TTI?

在首页预加载列表数据

尽量延迟加载组件,首屏没有展示的UI尽量不初始化。