0

我需要你的帮助。这是我试图实现的场景。

  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<QuerySnapshot, AsyncSnapshot>#4fe22) 时引发以下 NoSuchMethodError:类 'QuerySnapshot' 没有实例获取器 '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。(package: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):[错误:flutter/lib/ui/ui_dart_state.cc(186)]未处理的异常:NoSuchMethodError:方法'[]'在null上调用。E/flutter (13608): 接收者: null 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/flutter (13608): E/flutter (13608):

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

4

0 回答 0