ไม่ได้กำหนด 'อินสแตนซ์' getter สำหรับประเภท 'Firestore'

Aug 19 2020

สวัสดีทุกคนเมื่อฉันพยายามประกาศอินสแตนซ์ของ Firestore เขาให้ข้อผิดพลาดนี้! ทั้งหมดที่เกิดขึ้นหลังจากที่ฉันอัปเกรด Flutter เป็นเวอร์ชันล่าสุด

สุดท้าย databaseReference = Firestore.instance;

ฉันใช้

cloud_firestore: ^0.14.0

คำตอบ

4 PeterHaddad Aug 19 2020 at 00:38

เริ่มตั้งแต่cloud_firestoreเวอร์ชัน 0.14.0:

ในเวอร์ชันใหม่ล่าสุดcloud_firestoreคลาสFirestoreได้เลิกใช้แล้วตอนนี้คุณต้องใช้FirebaseFirestoreดังนั้นให้ทำดังนี้

นำเข้าแพ็คเกจ:

import 'package:cloud_firestore/cloud_firestore.dart'

ในการสร้างอินสแตนซ์:

final databaseReference  = FirebaseFirestore.instance;

ลิงค์อื่น ๆ เกี่ยวกับการเปลี่ยนแปลงใน Firebase:

ไม่มีการสร้างแอป Firebase "[DEFAULT]" - โทร Firebase.initializeApp () ใน Flutter และ Firebase

คลาสที่ไม่ได้กำหนด "FirebaseUser"

cloud_firestore 0.14.0 วิธีใช้ data method

3 ombiro Aug 20 2020 at 12:54

Cloud_firestore เวอร์ชัน 0.14.0 มีการเปลี่ยนแปลงดังต่อไปนี้:นำเข้าแพ็คเกจ:

import 'package:firebase_auth/firebase_auth.dart';

FirebaseUser ไม่สามารถใช้งานได้อีกต่อไป ในการประกาศผู้ใช้ Firebase ให้ใช้สิ่งต่อไปนี้ // ผู้ใช้

ในการประกาศอินสแตนซ์ Firebase ให้ใช้:

final firebaseInstance= FirebaseFirestore.instance;

แทนที่จะเรียก. เอกสาร (uid) ให้ใช้:

.doc(uid)

ตัวอย่างเช่น:

    await db
    .collection(Str.USERS_MESSAGE_LIST)
    .document(uid)
    .collection(Str.MESSAGE_COLLECTION)
    .document("$itemId$sellerId")
    .setData({...

จะกลายเป็น:

    await db
    .collection(Str.USERS_MESSAGE_LIST)
    .doc(uid)//note this
    .collection(Str.MESSAGE_COLLECTION)
    .document("$itemId$sellerId")
    .set({//note this

สิ่งที่คล้ายกันสำหรับแบบสอบถามอื่น ๆ ให้ใช้. data () ซึ่งตรงข้ามกับ. data ([]} เช่น

.startAfter([lastDocument.data[Str.ITEM_NAME]]).limit(perPage);

จะเขียนใหม่เป็น:

.startAfter([lastDocument.data()[Str.ITEM_NAME]]).limit(perPage);//note the () after data

สำหรับผู้ใช้: ใช้:

User user = FirebaseAuth.instance.currentUser;

และการเปลี่ยนแปลงอื่น ๆ อีกมากมายโปรดดูเอกสารอย่างเป็นทางการของ Firestore / Firebase