我有一个Scaffold
返回的FutureBuilder
小部件,我以一种显示原始加载指示符的方式对其进行了设置,然后用ConnectionState.done
再次调用了builder方法,即会构建实际的屏幕。在屏幕上,有一些控件,当您点击这些控件时,会在数据库中执行各种数据修改,然后调用setState()
。
到目前为止,一切都很好,但是在setState
上,我首先得到了加载指示器,当从sqlite检索数据时,将呈现屏幕。我很想跳过指标,等到数据在这里。
我猜测我可以将数据保存在内存中,在数据库和内存中以及在setState()
中对其进行修改,即使使用ConnectionState.waiting
,也可以使用缓存的数据来构建屏幕,但这并没有对于我来说,这似乎不太干净,因为它很容易出错(缓存的数据有时可能无法镜像数据库数据)。
有没有一种方法可以在ConnectionState.waiting时不重新渲染窗口小部件?
谢谢马丁
@override
Widget build(BuildContext context) {
args = ModalRoute.of(context).settings.arguments;
return FutureBuilder(
builder: (context, projectSnap) {
if (projectSnap.connectionState == ConnectionState.none &&
projectSnap.hasData == null) {
return Container(child: Text('Waiting for the data source...'));
}
if (projectSnap.connectionState == ConnectionState.waiting) {
return Container(child: Text('Waiting for the data source...'));
}
return buildScreenBody(context);
},
future: loadDataSources(),
);
}