flutter event queue 裡面執行耗時任務會阻塞主線程嗎

来源:6-4 基于Scaffold、Stack等主流Widget实现登录页面结构布局

慕莱坞3123884

2025-05-21

flutter event queue 耗時任務會阻塞主線成嗎

写回答

1回答

CrazyCodeBoy

2025-05-22

会的,Flutter 的事件队列(Event Queue)是在主线程(UI线程)中执行的,如果耗时操作没有放到 isolate 或 compute 中处理,会阻塞 UI。
正确做法

✅ 方法 1:使用 compute

compute(expensiveFunction, inputData);

这个会把耗时任务扔到 后台 isolate,不会卡主线程。


---

✅ 方法 2:自己用 Isolate.spawn

适合更复杂的数据流控制或持续任务。


---

✅ 方法 3:用 Future 或 await 包裹 I/O 类异步任务

final data = await http.get(...); // 不会阻塞 UI

但请注意:CPU 密集型任务不是真正异步的,只包一层 Future 是没用的,仍然会卡。
0
0

慕课甄选-Flutter零基础极速入门到进阶实战

全新Flutter从入门到进阶,实战仿携程网App

661 学习 · 316 问题

查看课程