Compre un curso con tres modulos en EDTeam y pffff... este curso es 1000 veces mejor que aquel curso... muchas gracias, no hay como perderse y el modo como lo explica... hasta ahora el mejor curso de flutter en UA-cam Bien! Gracias!
Se nota que sabes y es un video super informativo con un monton de cosas extras a firebase y detalles re importantes para los que siempre nos preguntamos las cosas. Te di like y suscribe
Paul, eres MUY BUENO COMO PROFESOR y ademas en lengua castellana España, me gustaría si es posible profundizar en cloud firestore con flutter, y si te haces un curso en Udemy cuenta con el primer alumno. Graciassss, eres bueno en esto.
pau muy buen video, consulta , al principio firebase te da 30 dias para enviar datos desde tu app sin autenticacion , yo recien levante todo , pero como puedo saber si esta realmente funcionando la autenticacion ??
me sale un error diciendo "TypeError: Cannot read properties of undefined (reading 'app')" y pues e buscado solucion y pues me dice que es en el archivo index.html pero tampoco se donde esta ubicado..
tener en cuenta si se usa la version 14 de firestore_cloud se presenta el sig problema Error: A value of type 'Map Function()' can't be assigned to a variable of type 'Map'. me marca en rojo la linea Map< String, dynamic> data = docs[index].data; si se usa la version 12 que usa en el video el autor este error se soluciona
A mi me sale este error: A value of type 'Object? Function()' can't be assigned to a variable of type 'Map'. Try changing the type of the variable, or casting the right-hand type to 'Map' entiendo que ya no recibe mapas sino que ahora es un objeto aun tratando de solucinar... estaré avisando si lo consigo
si a alguien le sirve pues sólo me faltó colocar un indica adicional como si fuera una lista la verdad no lo acabo de entender pero funciona Map data = doc[index]['valor']; por que en el ejemplo que nos da nuestro catedrático Map data = doc[index]; está sólo asi y por eso no me funcionaba.
Hola Pau, muchas gracias por estos vídeos en serio, se nota que eres increíble en este tema. Tengo una pregunta, al enlazar el la app así como lo hiciste, también queda todo configurado para que funcione en IOS? De nuevo, gracias.
No, no, precisamente esa parte no la puedo hacer porque no tengo Mac y hay que seguir las instrucciones que dan en ese caso, que son bastante distintas. Piensa que al final habrá 2 apps (con el mismo código Dart), pero son 2, así que en Firebase salen como 2 apps conectadas, y hay que hacer cada parte por separado.
@@pauekVale entiendo. Ya conecte mi app a firebase para android, ajjaja creo que es especial la primera vez que uno lo hace. Muchas gracias Pau, espero algún día mostrarte lo que estoy haciendo. :)
Hola, he seguido tu video, tengo una pregunta, al iniciar la app no me muestra datos, pero al momento de reiniciarlo si. Porque podria ser esto? Gracias
También me he encontrado muchos problemas con el fichero pubspec.yaml. Si tiene un espacio de más no se lleva las librería o te da error a la hora de añadirlo... Incluso, si figura la declaración de firebase, después de cloud_firebase_web, da error y la reclama... el orden adecuado que he encontrado ha sido: firebase, cloud_firestone, cloud_firestone_web... Por el momento me ha dejado ejecutar sin problemas, y estoy esperando la respuesta de firebase.
@@pauek En el Map yo no traigo un valor boolean sino que me traigo 3 valores de tipo String, realmente no se como traerlo desde Firebase, hay alguna manera de hacerte llegar una imagen para que entiendas mejor ?
Hola Pau, comenze en un flutter y me encanta cada vez mas, estoy empezando a ver el tema de cloud firestore porque es como "reciente" y no hay muchos tutoriales en español, creo que el unico entendible es el tuyo, hay alguna forma de que toda esa consulta se pueda hacer con menos codigo? o si o si hay que hacerlo asi? Ah y una pregunta mas, podrias hacer mas videos de como agregar, eliminar y hacer updates de la data en cloud firestore? porque estuve mirando tu canal y solo encontre este video sobre firestore :(
@@pauek Buenisimo, no me habia percatado porque no había llegado a esos videos. Una ultima pregunta, vale la pena seguir invirtiendo en flutter? Yo estaba estudiando Android Studio pero cuando conoci flutter me encanto, aun asi, veo muy poca oferta laboral y casi todas en idioma ingles, lo cual, si sé, pero no un ingles avanzado con el cual comunicarme con un equipo de desarrollo.. y eso me esta dando que pensar y dudas, la verdad necesito un trabajo y esto es lo que me apasiona pero tengo muchas dudas respecto a Flutter en el tema laboral..
@@David-fk9qj Yo a Flutter le veo un futuro brillante. Tengo varios ex-estudiantes trabajando en Flutter y uno de ellos recibe ofertas por LinkedIn directamente. Yo te diría que inviertas en Flutter y tengas proyectos publicados en Github y lo menciones en LinkedIn.
Buenas, muy buena explicación y buen vídeo, tengo un problemilla al ejecutar, me salta un error: The getter 'docs' was called on null. Receiver: null Tried calling: docs Luego como que se corrige al instante y no para de intentar acceder, y sale la rueda de carga y se queda ahí. Espero que me puedas ayudar. Gracias y un saludo.
Hola, no se si llego tarde pero tenia el mismo problema y lo acabo de solucionar, en el archivo pubspec.yaml en el apartado de dependencies: flutter: sdk: flutter luego de eso, agregue lo siguiente cloud_firestore: ^0.12.9+5 -- Y funcionó..!! :D
Hola, veo que hay desarrolladores que para conectar Flutter con Firebase crean una api (hecha en Node.js, por ejemplo) ¿Que ventaja ofrece conectar mediante una api, a conectar directamente con las clases que ofrece Firebase? Saludos.
Supongo que ocultar las credenciales, en el caso de web. En el caso de un móvil yo no creo que sea necesario. Las desventajas son grandes: te tienes que hacer tu backend y luego Firestore existe para escalar, y tu backend no puede escalar ni de lejos como Firestore.
Hola Pau, muy buen video! Tengo ganas de insertar cloud firestore a mi proyecto, pero no sé cómo hacer queris combinando diferentes colecciones. Es decir, es como si a parte de la colección de las tareas también tienes la colección personas, y podemos suponer que una persona puede resolver múltiples tareas y una tarea solo puede ser resuelta por una persona. Y la queri que me gustaría hacer es, dado una persona, que tareas ha realizado? o bien dado una tarea, que persona la ha realizado? No se si para hacer esto hace falta utilizar el groupCollections o hay que crear indices... La idea es el equivalente a un JOIN en una BBDD relacional en Cloud Firestore. Muchas gracias por todo y enhorabuena por el canal!
Eso es una relación muchos-a-muchos (many-to-many). Lo que se hace en Firestore es poner los IDs de las tareas en las personas (como un array "tareas"), o bien los IDs de las personas en las tareas (como un array "personas") o ambas cosas (pero si lo haces con ambas tienes que hacer transacciones). Hecho esto puedes consultar las tareas de una persona pidiendo qué tareas tienen en su array a cierta persona, o puedes consultar qué personas tienen cierta tarea preguntando qué personas tienen a cierta tarea en su array.
Hola Pau, muchas gracias por compartir... Te comento que me dio un error "Because cloud_firestore >=0.13.4 depends on cloud_firestore_web ^0.1.1 which depends on firebase ^7.0.0, cloud_firestore >=0.13.4 requires firebase ^7.0.0. So, because firebase depends on cloud_firestore ^0.13.4 and firebase is 1.0.0+1, version solving failed." En la dependencias he añadido firebase, cloud_firestore_web... ya te comento como me va...
Para la gente que este mirando este video en esta fecha, al llamar por primera vez datos desde la cloud firestore hacia la app les va a salir un error de "No Firebase App '[DEFAULT]' has been created" Solo cambien en el main reemplazen por esto (creo yo, que es el mejor lugar donde colocarlo, si Pau o alguien mas sabe un lugar mejor, que me corrija): import 'package:firebase_core/firebase_core.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp(); runApp(MyApp()); }
Paul. Buenas noches desde México, he seguido tu programa tu forma de explicar es muy buena y he seguido varios videos, pero este en especial tengo error en la siguiente la siguiente línea. List docs = snapshots.data.documents; ------------------ me marca error en documents
Abre el "Debug Console" y fíjate si sale algún mensaje de error. También intenta "Flutter clean" (desde consola o VSCode) y recompilas, a veces se bloquea él solo.
@@cristianalban5948 Que yo sepa Firestore utiliza los mismos algoritmos que usan los productos de Google para reconciliar los cambios que ha habido durante periodos de desconexión, pero tendrías que probarlo a fondo, porque el tema cobros lo veo sensible. De todas maneras yo lo he visto funcionar en pruebas pequeñas y es así. Hablan de ello aquí: firebase.google.com/docs/firestore/manage-data/enable-offline. Parece que es configurable.
edit2: He conseguido conectar la app. He creado una nueva app con un dominio inventado y he cambiado "minSdkVersion" a 23. Con eso ha tirado; no sé. Hola, Pau. En primer lugar, gracias por estos cursos porque son una delicia. Te escribo porque no he sido capaz de conectar la app con firebase. He realizado los pasos en varias ocasiones y el resultado es el mismo. En el "debug console" no aparece ningun error (aunque si quieres la puedo subir, al igual que los gradle). Uso windows con un emulador de Android Studio (un api29). No sé que más hacer :) edit1: Se me olvidaba comentar que no tengo dominio propio. He dejado el que sale por defecto y he usado ese.
Sí, lo de cambiar el minSdk yo he visto que era relevante en bastantes casos. A veces cuesta saber qué razón exacta ha permitido la conexión, pero te felicito por perseverar. La programación tiene mucho de esto: probar cosas, e intentar otras vías aunque no les veas sentido.
@@pauek Amigo una consulta, tengo una laptop con el procesador Corei7 , crees que sería bueno pasarme a Ubuntu Mate 20.04? ... porque descargue su iso y decia que era para amd
Hola buenas tardes excelente video muchas gracias, tengo una duda me sale error en la parte de --> body: streambuilder() “The name parameter ‘builder’ is required, but there’s no corresponding argument Try adding the required argument “ Por favor me podrías ayudar, y me verdad muchas gracias por el video.
Te dice que el StreamBuilder necesita un parámetro 'builder' con una función que devuelva el widget por debajo del StreamBuilder. Revisa la estructura del ejemplo o de la documentación.
A mi me da problemas el .docs final al igual q otros compañeros, me he mirado todos los comentarios pero no doy con ello, es solo la primera linea List docs = snapshot.data.docs; return ListView.builder( itemCount: docs.length, itemBuilder: (context, index) { Map data = docs[index].data; return ListTile( leading: Checkbox( onChanged: (context) {}, value: data['done']), title: Text(data['what']), Gracias, un saludo.
Hola, estoy utiizando firebase para autenticar con email y contraseña, al invocar a signInWithEmailAndPassword se presenta el siguiente problema: flutter con VSCode se pausa en una exception a pesar que utilizo try y catch, cuando ingreso email y password válidos todo va bien, pero cuando ingreso datos incorrectos( email o password), no funciona el try cath, alguna solución?
Mira bien el error que te da cuando se para, porque tienes abierto el debugger y puedes leer-lo si inspeccionas las variables en el panel de la izquierda. (Pero me extraña lo de que no respete el try/catch.)
la variable es: de tipo Type (PlatformException) con codigo "ERROR_WRONG_PASSWORD" (esto depende de los datos que se ingresen , ya que si se ingresa mail y contraseña correctas todo funciona) y con detalle nullo,; lo raro es que la llamada a signInWithEmailAndPassword esta dentro de un try catch, el mesaje completo es: Exception has occurred. PlatformException (PlatformException(ERROR_WRONG_PASSWORD, The password is invalid or the user does not have a password., null))
Disculpa a mi me sale un error en la linea 19 de tu main en List docs = snapshot.data.documents; en la parte de documents por que sera si mismo en la line 23 en Map data = docs[index].data; en data Espero me puedas ayudar con esa parte Exelente explicacion en todo eh
Ha cambiado hace poco. Ahora es "snapshot.data.docs". Y el campo ".data" no es necesario para acceder a los campos de un documento, con los [] es suficiente.
@@pauek lo hubiera leido antes, title: Text('${doc[index]['valor']}'), asi y pinto el dato en el titulo de mi ListTile, pero si por ejemplo quisiera tenerlo todo en un map aparte, cómo convierto todos esos datos en una variable local y así gestionarla? Map data = doc[index]['Preg01']; porque esto no funciona => ════════ Exception caught by widgets library ═══════ type 'String' is not a subtype of type 'Map'
@@pauek Gracias Pau! ya no subes videos últimamente, nos gusta como explicas y el dominio que tienes de ingeniería de software espero pronto puedas volver
Si estás en Windows es Shift + Alt + F (si clicas con el botón derecho del ratón en el texto del programa verás "Formatear Documento" y la tecla aparece al lado).
Creas el emulador en Android Studio y luego flutter lo verá y te aparece en la barra de estado de VSCode y al clicar puedes escoger otro target, si es necesario.
Muchas gracias por el video, pero me da asco por que no me funciona, no se a que se debe, ya investigue en stackoverflow, encontre la solucion y mil cosas pero tampoco, no se que sucede, no me manda errores que solucionar y ya me dio asco hahaha
y sus depéndencias: dependencies: flutter: sdk: flutter # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.0 firebase_core: ^0.5.2+1 cloud_firestore: ^0.14.3+1
Hola, muchas gracias por el vídeo, estoy teniendo un problema al momento de ejecutar la aplicación, ya he puesto todas las configuraciones, adjunto el error, gracias FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':app:processDebugGoogleServices'. > No matching client found for package name 'com.example.gastos' * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights. * Get more help at help.gradle.org BUILD FAILED in 14s Gradle task assembleDebug failed with exit code 1
Parece que o bien has registrado en Firebase con un nombre distinto o bien quizás no has puesto el fichero google-services.json en el sitio adecuado? Lo deduzco del error pero este no me ha pasado nunca.
yo lo solucione, fijate q coincida el nombre del dominio con el json pero igual me tira otro error , por esto reniengo mucho con flutter, reniego mas buildeando con miles de bugs q tiene q codeando
Compre un curso con tres modulos en EDTeam y pffff... este curso es 1000 veces mejor que aquel curso... muchas gracias, no hay como perderse y el modo como lo explica... hasta ahora el mejor curso de flutter en UA-cam Bien! Gracias!
Impecable tu explicacion!!!, gracias por compartir tus conocimientos..estoy iniciando con flutter
Genial, mucha claridad Pau Fernandez, mil felicidades y gracias por sus enseñanzas.
gracias amigoo, estoy en la Universidad me salvaste la vida. Saludos desde Perú
Felicidades escelente tutorial, yo soy un poco lento, pero con tu forma de explicar aprendi super bien !!! Muchas gracias !!
Se nota que sabes y es un video super informativo con un monton de cosas extras a firebase y detalles re importantes para los que siempre nos preguntamos las cosas. Te di like y suscribe
Hola, el video muy bueno, a pesar de ser de 45 min no parece largo,
un tiempo bien invertido, saludos desde Caceres.
gracias crack!!!
estoy empezando en flutter y la verdad es que tus tutoriales son el exito, explicas muy bien!
Pau eres grande men me salvaste de un dolor de cabeza de dos semanas e te agradece :)
Gracias,es sorprendente la velocidad de sincronización de los datos.
Muy bien explicado Pau, muchas gracias por los tutoriales
Genial Pau!!! me sirvio un monton este ejemplo. Seria muy bueno hacer una especie de Crud basado en este mismo ejemplo. Gracias !!!
Apuntado.
Excelente te felicito muy claro todo. Sigur con mas tutoriales
Excelente tutoría muchas gracias
Muy buen tutorial. Muchas gracias
Una joya este vídeo, gracias!
Paul, eres MUY BUENO COMO PROFESOR y ademas en lengua castellana España, me gustaría si es posible profundizar en cloud firestore con flutter, y si te haces un curso en Udemy cuenta con el primer alumno.
Graciassss, eres bueno en esto.
excelente, vídeo has salvado mi semana
Puedo poner un dominio que no existe o debo comprar un dominio si o si ?, Por cierto excelentes videos ojala pronto vuelvas hacer más videos 🙌
Hola cómo estás? Tenés algun ejemplo usando firebase database con flutter y actualziar automaticamente la lectura de un sensor q esta en la database?
pau muy buen video, consulta , al principio firebase te da 30 dias para enviar datos desde tu app sin autenticacion , yo recien levante todo , pero como puedo saber si esta realmente funcionando la autenticacion ??
Puedes explicar la parte de Mapas con Flutter? Ya sea con Google Maps o Leaflet. Muchas gracias
Sí, me haría ilusión. Lo pongo en la lista!
@@pauek Gracias, Lo necesito tambien
Eso es todo crak!
Naaa te pasaste hermano, te amo
Ya me llegó, esto parece que funciona...
muchas gracias pau
me sale un error diciendo "TypeError: Cannot read properties of undefined (reading 'app')" y pues e buscado solucion y pues me dice que es en el archivo index.html pero tampoco se donde esta ubicado..
tener en cuenta
si se usa la version 14 de firestore_cloud se presenta el sig problema
Error: A value of type 'Map Function()' can't be assigned to a variable of type 'Map'.
me marca en rojo la linea
Map< String, dynamic> data = docs[index].data;
si se usa la version 12 que usa en el video el autor este error se soluciona
A mi me sale este error: A value of type 'Object? Function()' can't be assigned to a variable of type 'Map'.
Try changing the type of the variable, or casting the right-hand type to 'Map' entiendo que ya no recibe mapas sino que ahora es un objeto aun tratando de solucinar... estaré avisando si lo consigo
si a alguien le sirve pues sólo me faltó colocar un indica adicional como si fuera una lista la verdad no lo acabo de entender pero funciona
Map data = doc[index]['valor'];
por que en el ejemplo que nos da nuestro catedrático
Map data = doc[index]; está sólo asi y por eso no me funcionaba.
Hola Pau, muchas gracias por estos vídeos en serio, se nota que eres increíble en este tema. Tengo una pregunta, al enlazar el la app así como lo hiciste, también queda todo configurado para que funcione en IOS? De nuevo, gracias.
No, no, precisamente esa parte no la puedo hacer porque no tengo Mac y hay que seguir las instrucciones que dan en ese caso, que son bastante distintas. Piensa que al final habrá 2 apps (con el mismo código Dart), pero son 2, así que en Firebase salen como 2 apps conectadas, y hay que hacer cada parte por separado.
@@pauekVale entiendo. Ya conecte mi app a firebase para android, ajjaja creo que es especial la primera vez que uno lo hace. Muchas gracias Pau, espero algún día mostrarte lo que estoy haciendo. :)
Hola, he seguido tu video, tengo una pregunta, al iniciar la app no me muestra datos, pero al momento de reiniciarlo si. Porque podria ser esto? Gracias
También me he encontrado muchos problemas con el fichero pubspec.yaml. Si tiene un espacio de más no se lleva las librería o te da error a la hora de añadirlo... Incluso, si figura la declaración de firebase, después de cloud_firebase_web, da error y la reclama... el orden adecuado que he encontrado ha sido: firebase, cloud_firestone, cloud_firestone_web... Por el momento me ha dejado ejecutar sin problemas, y estoy esperando la respuesta de firebase.
muy buen video, pero como le hacen si desde la app uno quiere quitar y poner el checkbox? no desde la web firebase, saludoss :)
Muy buen video.
Hola, por favor, ayudame estoy varado con este error :c
type '_InternalLinkedHashMap' is not a subtype of type 'Map'
No das suficientes datos para entender el problema! En qué línea de código te da ese error?
@@pauek En el Map yo no traigo un valor boolean sino que me traigo 3 valores de tipo String, realmente no se como traerlo desde Firebase, hay alguna manera de hacerte llegar una imagen para que entiendas mejor ?
Hola Pau, comenze en un flutter y me encanta cada vez mas, estoy empezando a ver el tema de cloud firestore porque es como "reciente" y no hay muchos tutoriales en español, creo que el unico entendible es el tuyo, hay alguna forma de que toda esa consulta se pueda hacer con menos codigo? o si o si hay que hacerlo asi?
Ah y una pregunta mas, podrias hacer mas videos de como agregar, eliminar y hacer updates de la data en cloud firestore? porque estuve mirando tu canal y solo encontre este video sobre firestore :(
Mira el de WhatsApp. Está todo hecho con Firestore!
@@pauek Buenisimo, no me habia percatado porque no había llegado a esos videos. Una ultima pregunta, vale la pena seguir invirtiendo en flutter? Yo estaba estudiando Android Studio pero cuando conoci flutter me encanto, aun asi, veo muy poca oferta laboral y casi todas en idioma ingles, lo cual, si sé, pero no un ingles avanzado con el cual comunicarme con un equipo de desarrollo.. y eso me esta dando que pensar y dudas, la verdad necesito un trabajo y esto es lo que me apasiona pero tengo muchas dudas respecto a Flutter en el tema laboral..
@@David-fk9qj Yo a Flutter le veo un futuro brillante. Tengo varios ex-estudiantes trabajando en Flutter y uno de ellos recibe ofertas por LinkedIn directamente. Yo te diría que inviertas en Flutter y tengas proyectos publicados en Github y lo menciones en LinkedIn.
Buenas, muy buena explicación y buen vídeo, tengo un problemilla al ejecutar, me salta un error: The getter 'docs' was called on null.
Receiver: null
Tried calling: docs
Luego como que se corrige al instante y no para de intentar acceder, y sale la rueda de carga y se queda ahí. Espero que me puedas ayudar. Gracias y un saludo.
Cuando intento importar el package:cloud_firestore/... no me lo reconoce... :-((((
Hola, no se si llego tarde pero tenia el mismo problema y lo acabo de solucionar, en el archivo pubspec.yaml en el apartado de
dependencies:
flutter:
sdk: flutter
luego de eso, agregue lo siguiente
cloud_firestore: ^0.12.9+5
-- Y funcionó..!! :D
Hola, veo que hay desarrolladores que para conectar Flutter con Firebase crean una api (hecha en Node.js, por ejemplo) ¿Que ventaja ofrece conectar mediante una api, a conectar directamente con las clases que ofrece Firebase? Saludos.
Supongo que ocultar las credenciales, en el caso de web. En el caso de un móvil yo no creo que sea necesario. Las desventajas son grandes: te tienes que hacer tu backend y luego Firestore existe para escalar, y tu backend no puede escalar ni de lejos como Firestore.
Hola Pau, muy buen video! Tengo ganas de insertar cloud firestore a mi proyecto, pero no sé cómo hacer queris combinando diferentes colecciones. Es decir, es como si a parte de la colección de las tareas también tienes la colección personas, y podemos suponer que una persona puede resolver múltiples tareas y una tarea solo puede ser resuelta por una persona. Y la queri que me gustaría hacer es, dado una persona, que tareas ha realizado? o bien dado una tarea, que persona la ha realizado? No se si para hacer esto hace falta utilizar el groupCollections o hay que crear indices... La idea es el equivalente a un JOIN en una BBDD relacional en Cloud Firestore. Muchas gracias por todo y enhorabuena por el canal!
Eso es una relación muchos-a-muchos (many-to-many). Lo que se hace en Firestore es poner los IDs de las tareas en las personas (como un array "tareas"), o bien los IDs de las personas en las tareas (como un array "personas") o ambas cosas (pero si lo haces con ambas tienes que hacer transacciones). Hecho esto puedes consultar las tareas de una persona pidiendo qué tareas tienen en su array a cierta persona, o puedes consultar qué personas tienen cierta tarea preguntando qué personas tienen a cierta tarea en su array.
ya no me funciona consultando gente de comunidad me dicen que ha cambiado no se que y que tengo que pone firebase_core. y otro sintacsis con future
Ok, gracias por avisar. Estas cosas cambian rápido.
@@pauek mi amnecida con este codigo porfin se me salido de los bug de la consola pero se queda en el circulo de cargar por siempre...
import 'package:flutter/material.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_core/firebase_core.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
runApp(FirebaseApp());
}
class FirebaseApp extends StatelessWidget {
//FirebaseFirestore firestore = FirebaseFirestore.instance;
/*final CollectionReference users =
FirebaseFirestore.instance.collection('tareas');*/
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
visualDensity: VisualDensity.adaptivePlatformDensity,
),
home: Scaffold(
appBar: AppBar(title: Text('Tareas Firebase')),
body: StreamBuilder(
stream: FirebaseFirestore.instance.collection('tareas').snapshots(),
builder:
(BuildContext context, AsyncSnapshot snapshot) {
if (!snapshot.hasData && snapshot.data == null) {
return Center(
child: CircularProgressIndicator(),
);
}
List documents = snapshot.data.docs;
return ListView.builder(
itemCount: documents.length,
itemBuilder: (context, index) {
Map data = documents[index].data();
return ListTile(
leading: Checkbox(
onChanged: (context) {},
value: data['done'],
),
title: Text(data['what']),
);
},
);
},
),
),
);
}
}
pero me sale un error que el docs esta null o algo asi. asi la consola de depuracion :
Launching lib\main.dart on sdk gphone x86 64 arm64 in debug mode...
✓ Built build\app\outputs\flutter-apk\app-debug.apk.
Installing build\app\outputs\flutter-apk\app.apk...
Connecting to VM Service at ws://127.0.0.1:50105/v4RwuoONNcI=/ws
I/TetheringManager( 6729): registerTetheringEventCallback:io.github.evancitoo.firebase
W/DynamiteModule( 6729): Local module descriptor class for providerinstaller not found.
I/DynamiteModule( 6729): Considering local module providerinstaller:0 and remote module providerinstaller:0
W/ProviderInstaller( 6729): Failed to load providerinstaller module: No acceptable module found. Local version is 0 and remote version is 0.
I/ncitoo.firebas( 6729): The ClassLoaderContext is a special shared library.
I/chatty ( 6729): uid=10151(io.github.evancitoo.firebase) AsyncTask #1 identical 1 line
I/ncitoo.firebas( 6729): The ClassLoaderContext is a special shared library.
D/nativeloader( 6729): classloader namespace configured for unbundled product apk. library_path=/product/priv-app/PrebuiltGmsCore/lib/x86_64:/product/priv-app/PrebuiltGmsCore/PrebuiltGmsCore.apk!/lib/x86_64:/product/lib64:/system/product/lib64
W/ncitoo.firebas( 6729): Accessing hidden field Ldalvik/system/BaseDexClassLoader;->pathList:Ldalvik/system/DexPathList; (greylist, reflection, allowed)
W/ncitoo.firebas( 6729): Accessing hidden field Ldalvik/system/DexPathList;->nativeLibraryDirectories:Ljava/util/List; (greylist, reflection, allowed)
W/ncitoo.firebas( 6729): Accessing hidden field Ldalvik/system/DexPathList;->systemNativeLibraryDirectories:Ljava/util/List; (greylist, reflection, allowed)
W/ncitoo.firebas( 6729): Accessing hidden field Ldalvik/system/DexPathList;->nativeLibraryPathElements:[Ldalvik/system/DexPathList$NativeLibraryElement; (greylist, reflection, allowed)
W/ncitoo.firebas( 6729): Accessing hidden method Ldalvik/system/DexPathList;->makePathElements(Ljava/util/List;)[Ldalvik/system/DexPathList$NativeLibraryElement; (greylist, reflection, allowed)
V/NativeCrypto( 6729): Registering com/google/android/gms/org/conscrypt/NativeCrypto's 286 native methods...
W/ncitoo.firebas( 6729): Accessing hidden method Ljava/security/spec/ECParameterSpec;->getCurveName()Ljava/lang/String; (greylist, reflection, allowed)
I/ProviderInstaller( 6729): Installed default security provider GmsCore_OpenSSL
W/ncitoo.firebas( 6729): Accessing hidden field Ljava/net/Socket;->impl:Ljava/net/SocketImpl; (greylist, reflection, allowed)
W/ncitoo.firebas( 6729): Accessing hidden method Ldalvik/system/CloseGuard;->get()Ldalvik/system/CloseGuard; (greylist,core-platform-api, linking, allowed)
W/ncitoo.firebas( 6729): Accessing hidden method Ldalvik/system/CloseGuard;->open(Ljava/lang/String;)V (greylist,core-platform-api, linking, allowed)
W/ncitoo.firebas( 6729): Accessing hidden field Ljava/io/FileDescriptor;->descriptor:I (greylist, JNI, allowed)
W/ncitoo.firebas( 6729): Accessing hidden method Ljava/security/spec/ECParameterSpec;->setCurveName(Ljava/lang/String;)V (greylist, reflection, allowed)
W/ncitoo.firebas( 6729): Accessing hidden method Ldalvik/system/BlockGuard;->getThreadPolicy()Ldalvik/system/BlockGuard$Policy; (greylist,core-platform-api, linking, allowed)
W/ncitoo.firebas( 6729): Accessing hidden method Ldalvik/system/BlockGuard$Policy;->onNetwork()V (greylist, linking, allowed)
W/Firestore( 6729): (21.4.3) [Firestore]: Listen for Query(target=Query(tareas order by __name__);limitType=LIMIT_TO_FIRST) failed: Status{code=PERMISSION_DENIED, description=Missing or insufficient permissions., cause=null}
Hola Pau, muchas gracias por compartir... Te comento que me dio un error "Because cloud_firestore >=0.13.4 depends on cloud_firestore_web ^0.1.1 which depends on firebase ^7.0.0, cloud_firestore >=0.13.4 requires firebase ^7.0.0.
So, because firebase depends on cloud_firestore ^0.13.4 and firebase is 1.0.0+1, version solving failed." En la dependencias he añadido firebase, cloud_firestore_web... ya te comento como me va...
Como lo solucionaste? me da el mismo error y ya probe muchas cosas y nada
Para la gente que este mirando este video en esta fecha, al llamar por primera vez datos desde la cloud firestore hacia la app les va a salir un error de "No Firebase App '[DEFAULT]' has been created"
Solo cambien en el main reemplazen por esto (creo yo, que es el mejor lugar donde colocarlo, si Pau o alguien mas sabe un lugar mejor, que me corrija):
import 'package:firebase_core/firebase_core.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
runApp(MyApp());
}
Probare
hermano me funciono tu solución , ahora me sale este error: type '() => Map?' is not a subtype of type 'Map' in type cast Ayuda que puedo hacer
En la definición del main la tuve que colocar como Future main() async {}, es lo mismo?
Paul. Buenas noches desde México, he seguido tu programa tu forma de explicar es muy buena y he seguido varios videos, pero este en especial tengo error en la siguiente la siguiente línea.
List docs = snapshots.data.documents;
------------------
me marca error en documents
Ahora ya es "docs", lo han cambiado.
Hice todo exactamente lo del vídeo, pero a la hora de ejecutar la app me sale el circulo cargando y se queda ahí siempre y no muestra nada
Abre el "Debug Console" y fíjate si sale algún mensaje de error. También intenta "Flutter clean" (desde consola o VSCode) y recompilas, a veces se bloquea él solo.
hola, y si nosotros desde el front queremos agregar tareas como se hace?
Mira el ejemplo de WhatsApp y verás cómo guardar documentos en Firestore.
Quiero hacer una aplicacion movil de cobros que los datos se guarden sin necesidad de internet en flutter firebase sirve?
Firebase necesita la red, te refieres a que se pierda la red durante un rato y siga funcinando?
@@pauek Si esa es la idea
@@cristianalban5948 Que yo sepa Firestore utiliza los mismos algoritmos que usan los productos de Google para reconciliar los cambios que ha habido durante periodos de desconexión, pero tendrías que probarlo a fondo, porque el tema cobros lo veo sensible. De todas maneras yo lo he visto funcionar en pruebas pequeñas y es así. Hablan de ello aquí: firebase.google.com/docs/firestore/manage-data/enable-offline. Parece que es configurable.
edit2: He conseguido conectar la app. He creado una nueva app con un dominio inventado y he cambiado "minSdkVersion" a 23. Con eso ha tirado; no sé.
Hola, Pau. En primer lugar, gracias por estos cursos porque son una delicia.
Te escribo porque no he sido capaz de conectar la app con firebase. He realizado los pasos en varias ocasiones y el resultado es el mismo. En el "debug console" no aparece ningun error (aunque si quieres la puedo subir, al igual que los gradle). Uso windows con un emulador de Android Studio (un api29). No sé que más hacer :)
edit1: Se me olvidaba comentar que no tengo dominio propio. He dejado el que sale por defecto y he usado ese.
Sí, lo de cambiar el minSdk yo he visto que era relevante en bastantes casos. A veces cuesta saber qué razón exacta ha permitido la conexión, pero te felicito por perseverar. La programación tiene mucho de esto: probar cosas, e intentar otras vías aunque no les veas sentido.
@@pauek he aprendido de el maestro! 🥰
Gracias de nuevo por tu trabajo, no me cansaré de decírtelo 😅
el dominio tiene q existir? o puede ser cualquiercosa
no me deja usar Streambuilder.instance, me dice que no existe :( The getter 'instance' isn't defined for the type 'StreamBuilder'.
Que recuerde es "FirebaseFirestore.instance", el StreamBuilder se usa sin ese sufijo.
@@pauek muchas gracias!!!
Buen video amigo, que sistema operativo estas usando ?
Linux
@@pauek Gracias ... Actualmente estoy usando windows 10, me recomiendas usar Linux ? , por cierto que versión usas ?
@@chillsheep4906 A mí me gusta. Uso Ubuntu Mate 20.04 que justo acaba de salir.
@@pauek Grande hermano ... Gracias 'o'
@@pauek Amigo una consulta, tengo una laptop con el procesador Corei7 , crees que sería bueno pasarme a Ubuntu Mate 20.04? ... porque descargue su iso y decia que era para amd
Hola buenas tardes excelente video muchas gracias, tengo una duda me sale error en la parte de -->
body: streambuilder()
“The name parameter ‘builder’ is required, but there’s no corresponding argument
Try adding the required argument “
Por favor me podrías ayudar, y me verdad muchas gracias por el video.
Te dice que el StreamBuilder necesita un parámetro 'builder' con una función que devuelva el widget por debajo del StreamBuilder. Revisa la estructura del ejemplo o de la documentación.
@@pauek okey muchisimas gracias !!!
A mi me da problemas el .docs final al igual q otros compañeros, me he mirado todos los comentarios pero no doy con ello, es solo la primera linea
List docs = snapshot.data.docs;
return ListView.builder(
itemCount: docs.length,
itemBuilder: (context, index) {
Map data = docs[index].data;
return ListTile(
leading: Checkbox(
onChanged: (context) {}, value: data['done']),
title: Text(data['what']),
Gracias, un saludo.
La primera vez que se llame el StreamBuilder o FutureBuilder, quizás snapshot.docs no exista aún, pon un if para controlar si snapshot.data es null.
Hola, estoy utiizando firebase para autenticar con email y contraseña, al invocar a signInWithEmailAndPassword se presenta el siguiente problema: flutter con VSCode se pausa en una exception a pesar que utilizo try y catch, cuando ingreso email y password válidos todo va bien, pero cuando ingreso datos incorrectos( email o password), no funciona el try cath, alguna solución?
Mira bien el error que te da cuando se para, porque tienes abierto el debugger y puedes leer-lo si inspeccionas las variables en el panel de la izquierda. (Pero me extraña lo de que no respete el try/catch.)
la variable es: de tipo Type (PlatformException) con codigo "ERROR_WRONG_PASSWORD" (esto depende de los datos que se ingresen , ya que si se ingresa mail y contraseña correctas todo funciona) y con detalle nullo,; lo raro es que la llamada a signInWithEmailAndPassword esta dentro de un try catch, el mesaje completo es:
Exception has occurred.
PlatformException (PlatformException(ERROR_WRONG_PASSWORD, The password is invalid or the user does not have a password., null))
Disculpa a mi me sale un error en la linea 19 de tu main en List docs = snapshot.data.documents; en la parte de documents por que sera
si mismo en la line 23 en Map data = docs[index].data; en data
Espero me puedas ayudar con esa parte
Exelente explicacion en todo eh
Ha cambiado hace poco. Ahora es "snapshot.data.docs". Y el campo ".data" no es necesario para acceder a los campos de un documento, con los [] es suficiente.
@@pauek lo hubiera leido antes, title: Text('${doc[index]['valor']}'), asi y pinto el dato en el titulo de mi ListTile, pero si por ejemplo quisiera tenerlo todo en un map aparte, cómo convierto todos esos datos en una variable local y así gestionarla?
Map data = doc[index]['Preg01']; porque esto no funciona => ════════ Exception caught by widgets library ═══════
type 'String' is not a subtype of type 'Map'
@@davisrd9468 final data = doc[index];
@@pauek Gracias Pau! ya no subes videos últimamente, nos gusta como explicas y el dominio que tienes de ingeniería de software espero pronto puedas volver
funciono todo excepto corregir la identacion con ctrl + shift + i
Si estás en Windows es Shift + Alt + F (si clicas con el botón derecho del ratón en el texto del programa verás "Formatear Documento" y la tecla aparece al lado).
que emulador usas para linux?
El que viene con Android Studio.
@@pauek y como lo llamas en vscode, soy nuevo en flutter y veo que la mayoria lo usa en Vscode, perdon por este tipo de preguntas :(
Creas el emulador en Android Studio y luego flutter lo verá y te aparece en la barra de estado de VSCode y al clicar puedes escoger otro target, si es necesario.
y si no tengo domino?
por defecto al crear un proyecto se te crea un dominio (com.example.nombredetuapp) si no has tocado nada
Muchas gracias por el video, pero me da asco por que no me funciona, no se a que se debe, ya investigue en stackoverflow, encontre la solucion y mil cosas pero tampoco, no se que sucede, no me manda errores que solucionar y ya me dio asco hahaha
comparto código actualizado ya que hubieron cambios a mediados del 2020 :
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';
import 'package:firebase_core/firebase_core.dart';
Future main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
// TODO: implement build
return MaterialApp(
title: 'Material app',
home: Scaffold(
appBar: AppBar(
title: Text('Material app Bar'),
backgroundColor: Colors.black45,
actions: [
IconButton(
icon: Icon(Icons.add),
onPressed: _add,
)
],
),
body:
StreamBuilder(
stream: Firestore.instance.collection('tareas').snapshots(),
builder: (context, AsyncSnapshot snapshot){
if (!snapshot.hasData){
return Center(child: CircularProgressIndicator(),);
}
List docs = snapshot.data.docs;
return ListView.builder(
itemCount: docs.length,
itemBuilder: (context,index){
Map data = docs[index].data();
return ListTile(
leading: Checkbox(value: data['done']),
title: Text(data['what']),
);
}
);
},
),
backgroundColor: Colors.white,
floatingActionButton: FloatingActionButton(
child: Icon(
Icons.add,
),
backgroundColor: Colors.red,
onPressed: () {},
),
drawer: Drawer(),
),
);
}
void _add() {
print("hola");
}
}
y sus depéndencias:
dependencies:
flutter:
sdk: flutter
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^1.0.0
firebase_core: ^0.5.2+1
cloud_firestore: ^0.14.3+1
O
y en mi caso como seria la herarquia yonasgraph.blogspot.com
Hola, muchas gracias por el vídeo, estoy teniendo un problema al momento de ejecutar la aplicación, ya he puesto todas las configuraciones, adjunto el error, gracias
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:processDebugGoogleServices'.
> No matching client found for package name 'com.example.gastos'
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at help.gradle.org
BUILD FAILED in 14s
Gradle task assembleDebug failed with exit code 1
Parece que o bien has registrado en Firebase con un nombre distinto o bien quizás no has puesto el fichero google-services.json en el sitio adecuado? Lo deduzco del error pero este no me ha pasado nunca.
yo lo solucione, fijate q coincida el nombre del dominio con el json pero igual me tira otro error , por esto reniengo mucho con flutter, reniego mas buildeando con miles de bugs q tiene q codeando