我需要你的帮助。这是我试图实现的场景。
- 用户注册应用程序
- 用户成功注册后,他们需要将自己与代理商关联。新用户将被带到代理商页面。页面上有一个 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):
我一直在阅读很多帖子并遵循他们所说的内容,但我无法让它发挥作用。