'QuerySnapshot' 类没有实例 getter 'doc'

时间:2021-05-11 16:56:48

标签: flutter flutter-dropdownbutton

我需要你的帮助。这是我正在尝试实现的场景。

  1. 用户注册了应用
  2. 在用户成功注册后,他们需要将自己与代理机构相关联。新用户被带到代理页面。页面上有一个 DropdownButton,其中填充了现有的代理机构。此 DropdownButton 由 Firestore 文档填充。

我可以使用 Stream 从文档中获取数据,但无法填充 DropdownButton。

  final _db = FirebaseFirestore.instance;

 body: SafeArea(
        child: SingleChildScrollView(
          child: Column(
Container(
                  child: StreamBuilder(
                    
                      stream: _db.collection('agency').snapshots(),
                      builder: (BuildContext context, AsyncSnapshot snapshot) {
                        if (!snapshot.hasData) {
                          return Center(
                            child: CircularProgressIndicator(),
                          );
                        } else {
                          var length = snapshot.data.doc.length;
                          print('length: ' + length);

                          return new DropdownButton<String>(
                            hint: new Text("Select Agency"),
                            value: _currentAgency,
                     
                            items: snapshot.data.doc.map((Map map) {
                              return new DropdownMenuItem<String>(
                                value: map["name"].toString(),
                                child: new Text(
                                  map["name"],
                                ),
                              );
                            }).toList(),
                          );
                        }
                        ;
                      }),
                ),

我在日志中收到以下错误

======== 小部件库捕获的异常 ================================== ====================== 在构建 StreamBuilder(dirty, state: _StreamBuilderBaseState#4fe22) 时抛出了以下 NoSuchMethodError: 'QuerySnapshot' 类没有实例 getter 'doc'。 接收器:“QuerySnapshot”的实例 尝试调用:doc

相关的导致错误的小部件是: StreamBuilder file:///C:/Users/nkane/AndroidStudioProjects/tonnah/lib/screens/agency_screen.dart:190:26 抛出异常时,这是堆栈: #0 Object.noSuchMethod (dart:core-patch/object_patch.dart:54:5) #1 _AgencyScreenState.build。 (包:tonnah/screens/agency_screen.dart:199:54) #2 StreamBuilder.build (package:flutter/src/widgets/async.dart:545:81) #3 _StreamBuilderBaseState.build (package:flutter/src/widgets/async.dart:124:48) #4 StatefulElement.build (package:flutter/src/widgets/framework.dart:4612:27) ...

E/flutter (13608): [ERROR:flutter/lib/ui/ui_dart_state.cc(186)] 未处理的异常:NoSuchMethodError:方法“[]”被调用为空值。 E/flutter (13608):接收器:空 E/flutter (13608):尝试调用: E/flutter (13608): #0 Object.noSuchMethod (dart:core-patch/object_patch.dart:54:5) E/flutter (13608): #1 _AgencyScreenState.getCurrentAgencyProfile (package:tonnah/screens/agency_screen.dart:96:62) E/扑(13608): E/扑(13608):

我一直在阅读很多帖子并遵循他们所说的,但我无法让它发挥作用。

0 个答案:

没有答案