Android 当流根据用户输入进行更新时,如何更新从Firestore提取文档数据的小部件?
我正在尝试构建可滚动的卡片,根据用户滚动的卡片更新当前的数字。到目前为止,我不知道如何做到这一点,除了包装在一个手势检测器卡和增加buildingNumber 但我想知道的是如何更新我在下面制作的信息小部件,以显示与buildingNumber对应的信息。buildingNumber是Firebase中的文档名,其中包含需要在信息小部件中更新的信息 因此,如果用户滚动,buildingNumber从1变为2。 然后,可滚动卡片下方的小部件应该显示与文档(buildingNumber)对应的Firestore数据,但尽管我能够在应用程序构建时显示数字,但我无法更新它,即使它似乎在幕后工作 以下是卡和信息小部件的代码:Android 当流根据用户输入进行更新时,如何更新从Firestore提取文档数据的小部件?,android,firebase,flutter,google-cloud-firestore,stream,Android,Firebase,Flutter,Google Cloud Firestore,Stream,我正在尝试构建可滚动的卡片,根据用户滚动的卡片更新当前的数字。到目前为止,我不知道如何做到这一点,除了包装在一个手势检测器卡和增加buildingNumber 但我想知道的是如何更新我在下面制作的信息小部件,以显示与buildingNumber对应的信息。buildingNumber是Firebase中的文档名,其中包含需要在信息小部件中更新的信息 因此,如果用户滚动,buildingNumber从1变为2。 然后,可滚动卡片下方的小部件应该显示与文档(buildingNumber)对应的Fir
Widget _buildingInfoCardState(BuildContext context) {
return MultiProvider(
providers: [ChangeNotifierProvider(create: (_) => BuildingNumber())],
child: Consumer<BuildingNumber>(
builder: (context, buildingNumber, _) {
return StreamBuilder(
stream: Firestore.instance
.collection('managit_buildings')
.document(user.uid)
.collection('buildings')
.document(BuildingNumber.buildingNr.toString())
.snapshots(),
builder: (context, snapshot) {
if (!snapshot.hasData) {
return Loading();
}
var userBuildingInfo = snapshot.data;
return ListView.builder(
scrollDirection: Axis.vertical,
itemCount: 1,
itemBuilder: (BuildContext context, int index) {
return Container(
height: 500,
padding: EdgeInsets.only(top: 30, left: 30, right: 30),
decoration: BoxDecoration(
color: codGrey,
borderRadius: BorderRadius.only(
topLeft: Radius.circular(50),
topRight: Radius.circular(50),
),
),
child: Column(
children: <Widget>[
// BUILDING INFO_NAME
Text(
userBuildingInfo['buildingName'],
style: TextStyle(
color: Colors.white70,
fontSize: 18,
),
),
...
BuildingNumber类:
class BuildingNumber with ChangeNotifier {
static int buildingNr = 1;
void increment() {
buildingNr++;
notifyListeners();
}
}
由于这是我的第一个应用程序,我意识到我目前正在做的事情可能不是最好的方式去做事情,所以当我在做的同时学习时,我愿意接受推荐
问题:我可以显示1号楼的信息,但当我增加buildingNumber时,它不会更新并显示2号楼的建筑信息。您正试图实现这一点吗?如果是这样,为什么在正常获取数据时使用流呢?在我的框架中有两个主要方面。顶部部分(建筑卡):这是一个可滚动的ListView.Builder,用于显示建筑的预览。从顶部选择卡片时,底部(建筑信息卡)应更新。因此,当您滚动并选择建筑卡时,建筑信息卡应使用Firebase中存储的信息进行更新。两张卡都从同一个Firestore文档中提取信息。您能否共享应用程序的屏幕截图,以帮助可视化您试图实现的目标?我很难理解你的描述。给你!比如@Joãosaares问你是否可以查看下面的文章
class BuildingNumber with ChangeNotifier {
static int buildingNr = 1;
void increment() {
buildingNr++;
notifyListeners();
}
}