Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.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
Flatter Firebase ListView-缓慢刷新_Firebase_Listview_Flutter_Google Cloud Firestore_Sqflite - Fatal编程技术网

Flatter Firebase ListView-缓慢刷新

Flatter Firebase ListView-缓慢刷新,firebase,listview,flutter,google-cloud-firestore,sqflite,Firebase,Listview,Flutter,Google Cloud Firestore,Sqflite,我使用StreamBuilder小部件创建了一个从Firebase集合填充的ListView。填充ListView需要一些时间,因为我正在为Firebase集合的每个项目运行任务(HTTP请求),然后在列表中显示结果 当我使用ListView离开页面,然后返回页面(使用PageView)时,ListView会完全刷新,而不是使用上次看到的版本。因此,在每次重新打开页面时,列表都会重新填充时,会有一个大约5秒的循环进度指示器 问题: 什么是使此ListView不完整的5的最佳方法 每次重新打开页

我使用StreamBuilder小部件创建了一个从Firebase集合填充的ListView。填充ListView需要一些时间,因为我正在为Firebase集合的每个项目运行任务(HTTP请求),然后在列表中显示结果

当我使用ListView离开页面,然后返回页面(使用PageView)时,ListView会完全刷新,而不是使用上次看到的版本。因此,在每次重新打开页面时,列表都会重新填充时,会有一个大约5秒的循环进度指示器

问题:

  • 什么是使此ListView不完整的5的最佳方法 每次重新打开页面时是否进行第二次刷新?它是否可以使用上次看到的版本,并且仅在项目添加到firebase集合时更新
  • 如果我要删除需要在集合的每个项上运行的任务(HTTP请求),而只是直接显示来自Firebase集合的值,那么刷新时间是否应该足够快,这样就不会有问题了
  • 是否最好创建一个与Firebase集合同步的本地数据库(使用sqflite)以防止缓慢刷新
代码:

class AccountsPage扩展StatefulWidget{
@凌驾
_AccountsPageState createState()=>_AccountsPageState();
}
类\u AccountsPageState扩展状态{
用户;
小部件_buildListItem(BuildContext上下文、DocumentSnapshot文档、字符串uuid){
//从firebase获取数据
字符串标记=document.data.values.toList()[0];
//对于当前文档/令牌,使用令牌发出HTTP请求并返回相关数据
返回列(
mainAxisSize:mainAxisSize.min,
儿童:[
灵活的(
孩子:未来建设者(
未来:AnhtPrequest(令牌,uuid),
生成器:(上下文,projectSnap){
如果(projectSnap.connectionState==connectionState.none||
!projectSnap.hasData | | projectSnap.data.length==0){
返回容器();
}
返回ListView.builder(
收缩膜:对,
itemCount:projectSnap.data.length,
itemBuilder:(上下文,索引){
返回列表块(
标题:文本(projectSnap.data[索引]),
);
},
);
},
),
)],
);
}
@凌驾
小部件构建(构建上下文){
final container=StateContainer.of(上下文);
user=container.user;
返回容器(
孩子:脚手架(
正文:专栏(
儿童:[
新柔性(
孩子:StreamBuilder(
stream:Provider.of(context).collectionRef.document(user.uuid).collection('tokens').snapshots(),
生成器:(上下文,快照){
如果(!snapshot.hasData){
返回容器(
儿童:中心(
子项:文本(“无数据”)
)
);
}
返回ListView.builder(
填充:边缘设置。全部(8.0),
反面:错,
itemCount:snapshot.data.documents.length,
itemBuilder:(上下文,int索引){
返回_buildListItem(上下文、快照、数据、文档[索引]、用户、uuid);
}
);        
}
)
),
]
),
),
);
}
}