FlutterFlutter飞起Flutter

flutter页面卡顿检测

2021-09-10  本文已影响0人  李小轰

前言

对于任何一款应用来说,页面的流畅度是用户体验最重要的几个指标之一。我们需要用数据的形式标识出页面的流畅程度。

如何了解页面流畅度

对于大部分人而言,当每秒的画面达到60,也就是俗称60FPS的时候,整个过程就是流畅的。一秒 60 帧,也就意味着平均两帧之间的间隔为 16.7ms。但并不意味着一秒低于60帧,人眼就会感觉到卡顿。小轰将查阅到的资料列出如下:

两款帧率检测工具

1. PerformanceOverLay

官方SDK为开发者提供的帧率检测工具,使用非常简单,在MaterialApp下添加属性showPerformanceOverlay:true

MaterialApp(
      showPerformanceOverlay: true,
      home: ...,
    )
demo演示

如图,PerformanceOverLay 会分别为我们展示了构建(UI)耗时和渲染(Raster)耗时。

注意:我们在判断流畅度的时候,要看一帧的总耗时(UI耗时+Raster耗时)。

2. fps_monitor

一款pub上的开源工具,链接地址:fps_monitor

集成步骤
  1. 添加引用 fps_monitor: ^2.0.0
  2. 根布局添加包裹组件
Widget build(BuildContext context) {
    GlobalKey<NavigatorState> globalKey = GlobalKey();
    WidgetsBinding.instance.addPostFrameCallback((t) {
      //overlayState 为 fps_monitor 内提供变量,用于overlay.insert
      overlayState = globalKey.currentState.overlay;
    });
    return MaterialApp(
      showPerformanceOverlay: false,
      navigatorKey: globalKey,
      builder: (ctx, child) => CustomWidgetInspector(
        child: child,
      ),
      home: MyApp(),
    );
  }
参数说明

与 PerformanceOverLay 不同,fps_monitor在使用上更加直观,省略了两组数据的相加。

原理分析:

上一篇下一篇

猜你喜欢

热点阅读