在繁重的任务中防止颤振应用程序丢帧的最简单方法是什么?
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
包也不依赖于特定于平台的代码。)
我 运行 遇到问题 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
包也不依赖于特定于平台的代码。)