颤振 120fps 问题

Sni*_*vio 6 android flutter

场景:在我的 120 fps 设备上发布版本后,在 flutter 中有一个包含 20 张卡的硬编码列表的应用程序,它仍然感觉像 60 fps 如何修复它,而本机 Android 对应物在 120 fps 下具有平滑渲染。

尝试过上述场景将基于滚动的小部件(基于构建器的小部件和普通小部件)。

无法以 120 fps 渲染是 Flutter 的一个缺陷吗?

Tim*_*ähr 5

在具有 120hz 显示的 Android 手机上,默认情况下会选择错误的显示模式(例如 60hz 而不是 120hz)。这个问题很容易纠正,那么在 Oneplus 8T 或 Galaxy S20+ 等手机上的性能就非常好。

  1. 导入flutter_displaymode
flutter_displaymode: ^0.3.0-nullsafety.0
Run Code Online (Sandbox Code Playgroud)
  1. 将其添加到您的根小部件(有状态):
class _YourAppState extends State<YourApp> {

  @override
  void initState() {
    setOptimalDisplayMode();
    super.initState();
  }

  Future<void> setOptimalDisplayMode() async {
    final List<DisplayMode> supported = await FlutterDisplayMode.supported;
    final DisplayMode active = await FlutterDisplayMode.active;

    final List<DisplayMode> sameResolution = supported.where(
            (DisplayMode m) => m.width == active.width
                && m.height == active.height).toList()..sort(
            (DisplayMode a, DisplayMode b) =>
                b.refreshRate.compareTo(a.refreshRate));

    final DisplayMode mostOptimalMode = sameResolution.isNotEmpty
        ? sameResolution.first
        : active;

    /// This setting is per session.
    /// Please ensure this was placed with `initState` of your root widget.
    await FlutterDisplayMode.setPreferredMode(mostOptimalMode);
  }
}
Run Code Online (Sandbox Code Playgroud)

请注意,目前还没有 120hz iPhone,因此无需执行它们。


小智 -13

请尝试这个,您可以使用媒体查询来调整小部件的大小。

MediaQuery.of(context).size
Run Code Online (Sandbox Code Playgroud)

  • 它和120fps有什么关系? (4认同)
  • @RohitSoni,你知道如果你意识到它不是很有用,你可以删除你的答案。(你也会拿回你的积分) (2认同)