在繁重的任务中防止颤振应用程序丢帧的最简单方法是什么?

What is simplest way to prevent frame drop in flutter application on heavy task?

我 运行 遇到问题 UI 当这条线是 运行:

时滞后
var keys = crypt.generateKeys();

完整函数如下:

void createKeys(_) async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    var keys = crypt.generateKeys();  // laggy line
    prefs.setString('persPriv', keys[0]);
    prefs.setString('persPub', keys[1]);
    prefs.setString('mesPriv', keys[2]);
    prefs.setString('mesPub', keys[3]);
  }

我试图用 Isolate 包装这个函数。

Isolate.spawn(createKeys, null);

但是我有一个错误:

[VERBOSE-2:ui_dart_state.cc(199)] Unhandled Exception: Invalid argument(s): Isolate.spawn expects to be passed a static or top-level function

开始隔离以防止丢帧和UI滞后的正确方法是什么?

我认为如果不支持 MethodChannel/访问 iOS / Android.[=16= 上特定于平台的底层 OS 框架,我认为您不能在 Isolate 中使用 SharedPreferences ]

您需要使用 FlutterIsolate or a similar package 来提供支持。

详细说明。

或者,您可以在 Isolate.spawn() 调用中 运行 crypt.generateKeys() 本身,然后在访问 SharedPreferences 的单独方法中使用结果。 (假设 crypt 包也不依赖于特定于平台的代码。)