问题描述
我需要你的帮助。这是我正在尝试实现的场景。
- 用户注册了应用
- 在用户成功注册后,他们需要将自己与代理机构相关联。新用户被带到代理页面。页面上有一个 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
相关的导致错误的小部件是: 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):
我一直在阅读很多帖子并遵循他们所说的,但我无法让它发挥作用。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)