flutter 在“where”参数中带有变量的Firebase示例

a0zr77ik  于 2023-05-01  发布在  Flutter
关注(0)|答案(2)|浏览(153)

在Flutter中开始编程时,我试图创建一个返回FireBase数据的简单视图
我在字符串“data”中传递了两个屏幕之间的值,但当我试图将其添加到我的firebase查询时,我得到了以下消息:
无法在初始值设定项中访问示例成员“data”。尝试用不同的expressionDart(implicit_this_reference_in_initializer)替换对示例成员的引用
当我用引号之间的值替换它时,我没有得到这个错误消息:
工作:

.where('Description', isEqualTo: 'ProductABC')

不工作:

.where('Description', isEqualTo: data)

你能帮我吗?
请在代码行下面找到

class Itemscreen extends StatefulWidget {
  String data;
  Itemscreen({this.data});

  @override
  _ItemscreenState createState() => _ItemscreenState(data);
}

class _ItemscreenState extends State<Itemscreen> {
  String data;
  _ItemscreenState(this.data);
 
  FirebaseFirestore firestore = FirebaseFirestore.instance;

  final Stream<QuerySnapshot> _itemlist = FirebaseFirestore.instance
      .collection('ItemList')
      .where('Description', isEqualTo: data)
      .snapshots();

谢谢你的帮助:)

qvsjd97n

qvsjd97n1#

正如错误消息所说,不能在对象的初始化块中使用data(或任何字段)。
你可能想在构造函数/初始化器中创建它,像这样:

class _ItemscreenState extends State<Itemscreen> {
  String data;
  final FirebaseFirestore firestore
  final Stream<QuerySnapshot> itemlist
  _ItemscreenState(this.data): 
      firestore = FirebaseFirestore.instance,
      _itemlist = FirebaseFirestore.instance
          .collection('ItemList')
          .where('Description', isEqualTo: data)
          .snapshots();

参见:What is the difference between constructor and initializer list in Dart?

rsaldnfx

rsaldnfx2#

将.trim()添加到变量数据。trim()

相关问题