方法'data'未为类型"对象"定义。尝试将名称更正为现有方法的名称,或定义名为"data"的方法

  • 本文关键字:定义 方法 data 有方法 类型 对象 firebase flutter
  • 更新时间 :
  • 英文 :


我在显示Firebase中的数据时遇到问题。这是我在FutureBuilder中使用的代码。看起来有一个关于data((的错误,但我不知道是哪一个,有人知道吗?

这就是我得到的:;没有为类型"Object"定义方法"data"。请尝试将名称更正为现有方法的名称,或定义名为"data"的方法">

if(snapshot.connectionState == ConnectionState.done) {
Map<String, dynamic> documentData = snapshot.data!.data() as Map<String, dynamic>;
return ListView(
children: [
CustomSubtitle(
text: "${documentData['01 - Brand']}"
),
CustomTitle(
text: "${documentData['02 - Name']}",
),
CustomText(
text: "${documentData['04 - Description']}",
)
],
);
}

您正在使用QuerySnapshot的代码。对于这种情况,您的代码可以工作,但考虑到如何使用生成的数据,您收到了DocumentSnapshot。要做到这一点,只需将您的代码更改为:

if(snapshot.connectionState == ConnectionState.done) {
Map<String, dynamic> documentData = snapshot.data as Map<String, dynamic>;
return ListView(
children: [
CustomSubtitle(
text: "${documentData['01 - Brand']}"
),
CustomTitle(
text: "${documentData['02 - Name']}",
),
CustomText(
text: "${documentData['04 - Description']}",
)
],
);
}

如果有人在我的情况下,我已经找到了解决方案:

builder: (context, AsyncSnapshot<DocumentSnapshot> snapshot) {
if(snapshot.connectionState == ConnectionState.done) {
DocumentSnapshot<Object?> documentData = snapshot.data!;
return ListView(
children: [
CustomSubtitle(
text: "${documentData['01 - Brand']}"
),
CustomTitle(
text: "${documentData['02 - Name']}",
),
CustomText(
text: "${documentData['04 - Description']}",
)
],
);
}
}
future: collection.doc(documentId).get(),
builder: ((context, snapshot) {
if (snapshot.connectionState == ConnectionState.done) {
Map<String, dynamic> data =
snapshot.data!.data() as Map<String, dynamic>;
String currency = '${data['currency']}';

return  Material(
)

最新更新