我的代码在以下错误中给出,我在此行中从 firebase 访问用户名时遇到问题
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/css/bootstrap.min.css" integrity="sha384-B0vP5xmATw1+K9KRQjQERJvTumQW0nPEzvF6L/Z6nronJ3oUOFUFpCjEUQouq2+l" crossorigin="anonymous">
<button data-song-id="{{$song->id}}" class="vote-to-collection sub-button btn btn-primary" value="apply">testing</button>
它给出了上面提到的错误
我知道访问地图数据的唯一方法是这个
snapshot.data['username']
答案 0 :(得分:8)
在新的flutter更新中,我们不需要添加.data()
我遇到了这个错误,删除 .data()
后问题解决了。
FutureBuilder<Object>(
future: FirebaseFirestore.instance
.collection('users')
.doc(userId)
.get(),
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return Text("Loading...");
}
return Text(
snapshot['username'],
style: TextStyle(
fontWeight: FontWeight.bold,
),
);
}
),
答案 1 :(得分:0)
改变这个:
snapshot.data['username'],
进入这个:
snapshot.data.data()['username'];
data()
是一种方法
答案 2 :(得分:0)
snapshot.data
是 FutureBuilder
返回的数据。所以从技术上讲,snapshot.data
是 DocumentSnapshot
的一种。要访问此文档的数据,您应该使用 snapshot.data.data()
或以下代码:
FutureBuilder<Object>(
future: FirebaseFirestore.instance
.collection('users')
.doc(userId)
.get(),
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.done) {
DocumentSnapshot doc = snapshot.data;
return Text(
doc.data()['username'],
style: TextStyle(
fontWeight: FontWeight.bold,
),
);
}
return Text("Loading...");
}
),
答案 3 :(得分:0)
在较新版本的 Flutter 中,您必须将 FutureBuilder 的类型指定为 DocumentSnapshot。编辑您的代码,如下所示:
FutureBuilder<DocumentSnapshot>(
future: FirebaseFirestore.instance
.collection('users')
.doc(userId)
.get(),
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting)
{
return const Text('Loading...');
}
return Text(
snapshot.data!['username'],
style: const TextStyle(fontWeight: FontWeight.bold),
);
}),
这应该对你有用。
答案 4 :(得分:0)
对于更新版本,您必须将FutureBuilder 的类型指定为 DocumentSnapshot。此外,data 更改为 requiredData。 编辑您的代码,如下所示:
declare @id bigint;
insert into OrderPlaced default values;
set @id = SCOPE_IDENTITY();
EXEC sys.sp_set_session_context @key= N'@id',@value = @id
GO
declare @id bigint = CAST(SESSION_CONTEXT(N'@id') AS BIGINT)
EXEC dbo.GetRecieptById @ID = @id;
现在您的代码将完美运行。