【发布时间】:2021-11-18 21:31:17
【问题描述】:
我有一个以 JSON 类对象表示的大数据列表。这是从 SQLite 数据库获取的Iterable<Map<String, dynamic>>。
运行查询甚至过滤结果数据都是异步运行的,但是当我尝试将此数据映射到一个类时,主线程会冻结。
整个代码块在一个异步函数中,它返回一个未来的数据,但由于某种原因,toList 只同步运行。
我尝试使用compute,但它一直在说
Invalid argument(s): Illegal argument in isolate message : (object is a closure - Function '<anonymous closure>':.)
我什至尝试过 RxDart 的 asyncMap,但这似乎并没有什么不同。
试图避开function 并使用普通的for 也不起作用。
如何使映射代码异步运行?
这是有问题的确切代码
final filteredCards = cardsRaw.where((e) {
return csvData.any(
(element) =>
e['card_name'] == element.cardName &&
(e['number'] as String).startsWith(element.cardNumber) &&
e['set_name'] == element.setName,
);
}).toList();
cardsRaw 是 11k,csvData 是 1000
【问题讨论】: