【发布时间】:2020-07-30 08:03:47
【问题描述】:
我正在使用 Stream builder 使用 Flutter 在屏幕上填充不同选项卡的正文内容。流构建器从 Firebase 获取数据并将这些值传递到不同的列表中,这些列表在 listView 构建器中用于显示内容。
屏幕上的选项卡应该会根据前一个屏幕上的选择而改变。这部分效果很好。然而,
问题一:
在初始加载屏幕时,所有选项卡的内容都显示在最初选择的选项卡下。只有当我向右滑动一次,即转到其他选项卡时,我才能在屏幕上获得所需的内容,即各个选项卡下的相应内容。
问题 2:
如果我从这个屏幕返回到上一个屏幕并再次做出不同的选择...在这个屏幕上打开的第一个选项卡上,我会从上一个选项卡中获取内容按钮。只有在选择不同的选项卡时,我只能获得所需的输出。
这表示编写的代码有效,但仅在某些条件下有效。选项卡完全按预期加载,即使在第一次尝试时,也只有选项卡下的内容是一个问题……这也是,仅在加载的第一个屏幕上。这清楚地表明流构建器有问题,但我似乎无法弄清楚究竟是什么。
我使用流生成器的代码布局是:
body : StreamBuilder(
stream: Firestore.instance
. //Required Reference//
.snapshots(),
builder: (BuildContext context, AsyncSnapshot <QuerySnapshot>snapshot) {
var someData = snapshot.data.documents;
List<dynamic> someDocs = someData;
if (snapshot.hasData == null){
return CircularProgressIndicator(),}
else if (snapshot.data.documents.length > 0){
RequiredList1 = [];
..... More such statements ..........
RequiredList11 = [];
for(int i =0; i < someDocs.length; i++){
RequiredList1.add(someData[i]['field1']);
....... More such calls ................
RequiredList11.add(someData[i][field11']);
}
return WidgetToShowContents
}
}
);
唯一值得一提的是,所做的引用包括当前选择的选项卡的名称。但是,由于该选项卡显示正确,并且所有其他选项卡也可以正常工作,因此我确信这不是造成问题的原因。
我曾想过使用 dispose 方法摆脱流构建器来解决问题 2,但我不知道如何使用流构建器来实现它,我也不确定这是否可行。
【问题讨论】:
标签: android firebase flutter tabbar stream-builder