La 'instancia' del captador no está definida para el tipo 'Firestore'

Aug 19 2020

Hola chicos, cuando trato de declarar una instancia de Firestore, me da este error. todo lo que sucede después de actualizar mi Flutter a la última versión

referencia de base de datos final = Firestore.instance;

yo suelo

cloud_firestore: ^0.14.0

Respuestas

4 PeterHaddad Aug 19 2020 at 00:38

A partir de cloud_firestorela versión 0.14.0:

En la versión más reciente de cloud_firestore, la clase Firestoreestaba en desuso ahora tiene que usar FirebaseFirestore, así que solo haga lo siguiente:

Importar el paquete:

import 'package:cloud_firestore/cloud_firestore.dart'

Para crear una instancia:

final databaseReference  = FirebaseFirestore.instance;

Otros enlaces sobre los cambios en Firebase:

No se ha creado ninguna aplicación de Firebase '[DEFAULT]': llama a Firebase.initializeApp() en Flutter y Firebase

Clase indefinida 'FirebaseUser'

cloud_firestore 0.14.0 cómo usar el método de datos

3 ombiro Aug 20 2020 at 12:54

Cloud_firestore versión 0.14.0 tiene los siguientes cambios: importe el paquete:

import 'package:firebase_auth/firebase_auth.dart';

FirebaseUser ya no está disponible. Para declarar un usuario de Firebase, use lo siguiente; //Usuario,

Para declarar una instancia de Firebase, use:

final firebaseInstance= FirebaseFirestore.instance;

en lugar de llamar a .document(uid), use:

.doc(uid)

por ejemplo:

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

se convertirá:

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

De manera similar para otras consultas, use .data() en lugar de .data([]}, por ejemplo

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

se reescribirá como:

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

Para un usuario: use:

User user = FirebaseAuth.instance.currentUser;

Y muchos otros cambios: consulte la documentación oficial de Firestore/Firebase