![](/img/trans.png)
[英]Flutter StreamBuilder widget Error : type ' () => Map<String, dynamic >' is not a subtype of type 'DocumentSnapshot<Object?>' in type cast
[英]Flutter type 'Future<dynamic>' is not a subtype of type 'Widget' error
我想要做的是从文档中提取一些数据,其中登录用户是来自名为 Repair 的集合的电子邮件。 我为此创建了一个函数。 但是我收到了 - 类型“Future”不是类型“Widget”的子类型 - 错误。
getCustomerRepairLog() async {
final user = FirebaseAuth.instance.currentUser!;
var _repairLogs = await FirebaseFirestore.instance.collection('Repair').get();
for (var eleman in _repairLogs.docs) {
if (eleman.data()['email']! == user.email) {
return Container(
child: Column(
children: [
Text("$eleman.data()['description']"),
],
),
);
}
}
return Text('Loading');
}
我想将它用作 Column 中的 getCustomerRepairLog()。 你能帮助我吗?
您需要将 FutureBuilder 用于 future 方法。创建状态变量以避免每次构建状态时都调用它。
final user = FirebaseAuth.instance.currentUser!; //better do a null check 1st
late final _repairLogs = FirebaseFirestore.instance.collection('Repair').get();
你的方法就像
Widget getCustomerRepairLog() {
return FutureBuilder(
future: _repairLogs,
builder: (context, snapshot) {
if (snapshot.hasData) {
List<Widget> items = [];
final data = snapshot.data?.docs;
if (data == null) return Text("got null");
for (final eleman in data) {
if (eleman.data()['email']! == user.email) {
items.add(Text("${eleman.data()['description']}"));
}
}
return CircularProgressIndicator();
},
);
}
查找有关FutureBuilder的更多信息
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.