flutter - Firestore StreamBuilder ListView - 屏幕闪烁
问题描述
我正在使用绑定到两个 Firestore DB 集合的嵌套 StreamBuilder 的屏幕上工作。当用户在 UI 上执行操作并且该实习生在 Firestore DB 中进行更改时,它会刷新。每次发生 DB 更改时,屏幕都会闪烁并移动到顶部,而忽略当前的滚动位置。有没有办法避免这种糟糕的用户体验?谢谢你。
@override
Widget build(BuildContext context) {
return StreamBuilder<QuerySnapshot>(
stream: stream1(),
builder:(context, AsyncSnapshot<QuerySnapshot> userOrder){
return StreamBuilder<QuerySnapshot>(
stream: stream2(),
builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot){
switch(snapshot.connectionState){
default:
return new Scaffold(
appBar: getHeaderAppBar(),
drawer: getLeftMenuBarDrawer(),
backgroundColor: Colors.white,
body: Scrollbar(child:ListView(
children: snapshot.data.documents.map((DocumentSnapshot mydoc){
if(userOrder.hasData){
...
}
..
return ListTile(
title: getTitle()
subtitle: getSubtitle()
isThreeLine: true,
);
}).toList(),
))}
解决方案
推荐阅读
- python - 如何使用函数在 django 中复制 Meta 中差异很小的模型?
- android - 改进行列表视图的整体布局
- python - 自动格式化列表中的项目
- java - 为什么我的 updateAppWidget 方法不对所有操作做出反应?
- javascript - 为在 nativescript 事件中传递的 $event 获取“未定义” - IOS(N-Playground 测试)
- python - 使用“for 循环” - 如果用户输入中有重复的单词,则只显示第一个重复的单词。如何显示所有重复的单词?
- java - 代码没有输出期望值;如何修改它以获得预期的结果?
- javascript - 使用jquery进行简单的dom遍历
- dataset - 如何在特定的知识图中为 TransE 算法构建我自己的数据集
- android - 具有动态原始文件的媒体播放器