O getter 'instance' não está definido para o tipo 'Firestore'

Aug 19 2020

Oi pessoal, quando estou tentando declarar uma instância do Firestore, ele dá esse erro! tudo o que está acontecendo depois que atualizo meu Flutter para a última versão

final databaseReference = Firestore.instance;

eu uso

cloud_firestore: ^0.14.0

Respostas

4 PeterHaddad Aug 19 2020 at 00:38

A partir da cloud_firestoreversão 0.14.0:

Na versão mais recente do cloud_firestore, a classe Firestorefoi descontinuada agora você tem que usar FirebaseFirestore, então apenas faça:

Importe o pacote:

import 'package:cloud_firestore/cloud_firestore.dart'

Para criar uma instância:

final databaseReference  = FirebaseFirestore.instance;

Outros links sobre as mudanças no Firebase:

Nenhum aplicativo Firebase '[DEFAULT]' foi criado - chame Firebase.initializeApp() no Flutter e no Firebase

Classe indefinida 'FirebaseUser'

cloud_firestore 0.14.0 como usar o método de dados

3 ombiro Aug 20 2020 at 12:54

Cloud_firestore versão 0.14.0 tem as seguintes alterações: importar o pacote:

import 'package:firebase_auth/firebase_auth.dart';

FirebaseUser não está mais disponível. Para declarar um usuário do Firebase, use o seguinte; //Do utilizador,

Para declarar uma instância do Firebase, use:

final firebaseInstance= FirebaseFirestore.instance;

em vez de chamar .document(uid), use:

.doc(uid)

por exemplo:

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

se tornará:

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

Da mesma forma para outras consultas, use .data() em vez de .data([]} por exemplo

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

será reescrito como:

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

Para um usuário: use:

User user = FirebaseAuth.instance.currentUser;

E muitas outras alterações - consulte a documentação oficial do Firestore/Firebase