我有一个正在开发的Flutter应用,其中包括日历。
当更新日历上的每一天时,需要进行一些处理以计算出要显示的内容。
一切正常,直到数据量更高。
现在,当每天更新时,更新功能将阻止UI。
我尝试进行更新,并在更新时显示进度动画。
尽管我如果在异步函数中运行代码,然后使用处理后的数据更新状态,这将阻止此阻塞操作。
我正在从“我的日子”显示的initState函数(有状态的小部件)中调用update函数。
A还研究了如何使用该线程库;
https://pub.dartlang.org/packages/threading
但它与Flutter的当前Beta分支不兼容。
我知道有一个IO线程,我认为这是处理此操作的正确位置,但是我看不到如何在其上运行Dart代码。
在不阻塞UI的情况下运行大量操作的正确方法是什么?
这是我为日间展示小部件尝试过的代码示例;
class DayDisplay extends StatefulWidget{
DayDisplay(this.date, {Key key}) : super(key: key);
DateTime date;
@override
State<StatefulWidget> createState() => new _DayState();
}
class _DayState extends State<DayDisplay>{
@override
void initState(){
loading = true;
new Future(updateData);//.then(()=>updateUI());
super.initState();
}
void updateUI(){
if (mounted){
setState(() {});
}
}
void updateData() async{
///Do heavy processing in here to populate data
setState(() => loading = false);
}
@override
Widget build(BuildContext context) {
return /*{Generate widget tree here}*/;
}
}