Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.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

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
Android 当流根据用户输入进行更新时,如何更新从Firestore提取文档数据的小部件?_Android_Firebase_Flutter_Google Cloud Firestore_Stream - Fatal编程技术网

Android 当流根据用户输入进行更新时,如何更新从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

我正在尝试构建可滚动的卡片,根据用户滚动的卡片更新当前的数字。到目前为止,我不知道如何做到这一点,除了包装在一个手势检测器卡和增加buildingNumber

但我想知道的是如何更新我在下面制作的信息小部件,以显示与buildingNumber对应的信息。buildingNumber是Firebase中的文档名,其中包含需要在信息小部件中更新的信息

因此,如果用户滚动,buildingNumber从1变为2。 然后,可滚动卡片下方的小部件应该显示与文档(buildingNumber)对应的Firestore数据,但尽管我能够在应用程序构建时显示数字,但我无法更新它,即使它似乎在幕后工作

以下是卡和信息小部件的代码:

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();
  }
}