Flutter开发HarmonyOS鸿蒙Next应用的时候是否有高刷新率设置的方法同一套代码在iOS和安卓下明显比在鸿蒙流畅一些鸿蒙有明显的掉帧特别是push的时候非常的明显

Flutter开发HarmonyOS鸿蒙Next应用的时候是否有高刷新率设置的方法同一套代码在iOS和安卓下明显比在鸿蒙流畅一些鸿蒙有明显的掉帧特别是push的时候非常的明显
【需求价值】: 是否有高刷新率设置的方法?同一套代码,在iOS和安卓下明显比在鸿蒙流畅一些,鸿蒙有明显的掉帧,特别是push的时候非常的明显

1 回复

更多关于Flutter开发HarmonyOS鸿蒙Next应用的时候是否有高刷新率设置的方法同一套代码在iOS和安卓下明显比在鸿蒙流畅一些鸿蒙有明显的掉帧特别是push的时候非常的明显的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter开发中,如果你发现同一套代码在iOS和安卓下比在HarmonyOS(鸿蒙)上更流畅,特别是存在掉帧现象,尤其是push操作时,可以尝试以下几种方法来优化性能,并确保在HarmonyOS上也能实现高刷新率体验:


1. 检查并优化Flutter动画和布局

  • 避免不必要的重绘:确保在push时不会触发大量的UI重绘或布局计算。使用RepaintBoundary来隔离复杂的小部件。
  • 使用高效的动画:优先使用AnimatedBuilderAnimatedWidget,而不是在setState中手动更新动画。
  • 减少嵌套层级:过多的嵌套会导致布局性能下降,尤其是在push时。

2. 启用高刷新率

  • 检查设备刷新率:HarmonyOS设备可能默认未启用高刷新率。你可以在设备设置中手动开启高刷新率模式。
  • 使用Flutter的SchedulerBinding:通过SchedulerBinding可以获取设备的刷新率信息,并确保动画帧率与设备刷新率同步。
    final double refreshRate = SchedulerBinding.instance.window.displayRefreshRate;
    print('Device refresh rate: $refreshRate Hz');
    
  • 调整Flutter帧率:默认情况下,Flutter会尝试以60Hz运行。如果你希望提高帧率,可以尝试以下方式:
    import 'package:flutter/scheduler.dart';
    
    void setHighRefreshRate() {
      SchedulerBinding.instance.schedulingStrategy = (List<FrameCallback> callbacks) {
        for (final callback in callbacks) {
          callback(Duration(milliseconds: 8)); // 尝试以120Hz运行(1000ms / 120 ≈ 8ms)
        }
        return true;
      };
    }
    

3. 优化push操作

  • 使用PageRouteBuilder:自定义路由过渡动画,避免默认动画的卡顿。
    Navigator.push(
      context,
      PageRouteBuilder(
        pageBuilder: (context, animation, secondaryAnimation) => YourPage(),
        transitionsBuilder: (context, animation, secondaryAnimation, child) {
          return FadeTransition(
            opacity: animation,
            child: child,
          );
        },
      ),
    );
回到顶部