gpt4 book ai didi

firebase - 错误:无法在字段初始化程序中访问 'this'以读取 'uid'

转载 作者:行者123 更新时间:2023-12-03 04:39:28 25 4
gpt4 key购买 nike

希望有人可以帮助我。我有一个适用于此的StreamProvider:

class DatabaseService {
final String uid;
DatabaseService({this.uid});

final Query flashCardWordsCollection = Firestore.instance.collection('MyWords')
.where("SelectedToStudy", isEqualTo: true)
.where("DocBelongsTo", isEqualTo: "rgDe5I0QgFfax123Igxo8VQew9T2")
.orderBy("LastFlashCard", descending: false);
但是,我需要将DocBelongsTo筛选器更改为基于当前登录到应用程序的用户。当我尝试这个:
class DatabaseService {
final String uid;
DatabaseService({this.uid});

final Query flashCardWordsCollection = Firestore.instance.collection('MyWords')
.where("SelectedToStudy", isEqualTo: true)
.where("DocBelongsTo", isEqualTo: uid)
.orderBy("LastFlashCard", descending: false);
在home_screen.dart上,我这样调用StreamProvider:
final user = Provider.of<User>(context);

return StreamProvider<List<VoBuWord>>.value(
value: DatabaseService(uid: user.uid).flashCardWords ,
我收到以下错误:
lib/services/database.dart:11:41: Error: Can't access 'this' in a field initializer to read 'uid'.
.where("DocBelongsTo", isEqualTo: uid)
从我一直在进行的研究中,我了解到这是由于在调用此函数时可能已设置或未设置uid的事实,因此我得到了错误。但是我不知道如何解决这个问题。
用户必须先登录才能使用该应用程序,因此从理论上讲,uid永远不应为空,但是,我不知道该如何告诉类(class)。
任何帮助将不胜感激。
谢谢

最佳答案

您需要使用方法或构造函数来访问类的实例字段,例如:

Query getData(){
return Firestore.instance.collection('MyWords')
.where("SelectedToStudy", isEqualTo: true)
.where("DocBelongsTo", isEqualTo: uid)
.orderBy("LastFlashCard", descending: false);
}

然后调用它:
Stream<List<VoBuWord>> get flashCardWords {
return getData().snapshots().map(_vobuWordListFromSnapshot);
}

关于firebase - 错误:无法在字段初始化程序中访问 'this'以读取 'uid',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63494815/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com