Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 如何在FutureBuilder中刷新快照_Flutter - Fatal编程技术网

Flutter 如何在FutureBuilder中刷新快照

Flutter 如何在FutureBuilder中刷新快照,flutter,Flutter,如何刷新FutureBuilder的快照?我有一个选项卡控制器,其中一个选项卡上有一个可解雇的FutureBuilder。我通过以下方式实施了ondismissed事件: onDismissed: (direction) async { setState(() async { await MyContent().delete(snapshot.data[index]); myContents = getMyContents(myContent.id); }); }, 我

如何刷新FutureBuilder的快照?我有一个选项卡控制器,其中一个选项卡上有一个可解雇的FutureBuilder。我通过以下方式实施了ondismissed事件:

onDismissed: (direction) async {
setState(() async {
      await MyContent().delete(snapshot.data[index]);
      myContents = getMyContents(myContent.id);
});
},
我测试了流程,删除工作正常,myContents列表返回正确数量的元素,元素确实从列表中消失,但是当我导航到另一个选项卡并返回时,删除的元素再次出现。只需关闭页面并重新打开,即可显示正确的元素

问题在于未刷新的快照:

FutureBuilder<List<MyContent>>(
future: myContents,
builder: (context, snapshot) {
if (snapshot.hasData) {
return new ListView.builder(
FutureBuilder(
未来:myContents,
生成器:(上下文,快照){
if(snapshot.hasData){
返回新的ListView.builder(

如何解决此问题?

在setState中调用await是最糟糕的事情;这绝对是不好的。请检查此处:。将await放在外部使用此方法的主要问题是,在滑动dismissable元素后,它会闪烁几秒钟。
onDismissed:(direction)async{await MyContent()。删除(snapshot.data[index]);setState((){myContents=getMyContents(myContent.id);});},