Arquitectura de Aplicaciones

1

隆Renovaremos este curso! Te quedan unos d铆as para concluirlo.

2

Pasos para aprender Flutter Avanzado

3

驴Qu茅 es una Arquitectura de software?

4

Tipos de Arquitecturas para Flutter

5

Arquitectura BLoC en Flutter

6

BLoC + Clean Architecture en Flutter

7

Estructurando nuestro proyecto utilizando la Arquitectura BLoC

8

Haciendo BLoC Singleton en Flutter

9

Aplicando Providers al Proyecto

Firebase y Flutter

10

隆Renovaremos este curso! Te quedan unos d铆as para concluirlo.

11

Integrando Firebase Authentication, Cloud Firestore y Firebase Storage al proyecto

12

Integrando Firebase a Flutter para iOS

13

Integrando Firebase a Flutter para Android

14

Creaci贸n de Pantalla de Login con Flutter

15

Creando botones reutilizables en Flutter

16

Autenticaci贸n de Firebase con Google

17

隆Renovaremos este curso! Te quedan unos d铆as para concluirlo.

18

Implementando Firebase Authentication en BLoC Pattern

19

Streams en Flutter

20

Manejando una sesi贸n con Firebase Authentication y Flutter

21

Implementando Google SignOut en BLoC

22

Implementando Google SignOut en View

23

Monitoreando y validando la conexi贸n al Sign con Google

24

Mostrando los datos de usuario de Google en la interfaz en Flutter

Cloud Firestore de Firebase en Flutter

25

隆Renovaremos este curso! Te quedan unos d铆as para concluirlo.

26

驴Qu茅 es Cloud Firestore de Firebase?

27

Analizando un modelo de datos no relacional

28

Creando un Modelo de datos en Cloud Firestore

29

Enviando datos a Cloud Firestore

30

Creando un Widget gradiente personalizado

31

Manejo de Desbordamiendo de Texto de Widget Text

32

Bot贸n de Back en un Appbar en Flutter

33

Navegaci贸n entre pantallas en Flutter

34

Widget Text Appbar personalizado en Flutter

35

隆Renovaremos este curso! Te quedan unos d铆as para concluirlo.

36

Widget TextField personalizado en Flutter

37

Creando una Safe Area para una interfaz que tiene un AppBar

38

Widget TextField con iconos en Flutter

39

Retocando el CardView

40

Mostrando im谩genes en un CardView

41

Creando un bot贸n de Submit en Flutter

42

Env铆o de datos de un f贸rmulario en Flutter

43

Subiendo datos a Firestore de Firebase

44

Formularios en Flutter

Acceso al Hardware con Flutter

45

隆Renovaremos este curso! Te quedan unos d铆as para concluirlo.

46

Acceso a la c谩mara en Flutter

47

Librer铆as de acceso a Hardware en Flutter

Firebase Storage en Flutter

48

隆Renovaremos este curso! Te quedan unos d铆as para concluirlo.

49

Qu茅 es y c贸mo funciona Firebase Storage en Flutter

50

Subiendo una imagen a Firebase Storage desde Flutter

Querys avanzados en Cloud Firestore de Firebase en Flutter

51

隆Renovaremos este curso! Te quedan unos d铆as para concluirlo.

52

Manejo de im谩genes en Cloud Firestore

53

Cloud Firestore insertando referencias y arrays en la base de datos

54

Descargar im谩genes de Firebase Storage y mostrarlas en Flutter

55

Procesando datos con BLoC Pattern

56

Trayendo datos de Cloud Firestore

57

Persistiendo datos de un usuario logueado

58

Aplicando Filtros en Cloud Firestore

59

隆Renovaremos este curso! Te quedan unos d铆as para concluirlo.

60

Construyendo los Places en la pantalla de Home

61

Mostrando los Places en la pantalla de Home

62

Actualizando datos en tiempo real

63

Manejando la l贸gica de likes, como bot贸n toggle.

64

Insertando y obteniendo referencias en datos de Firestore.

65

Usando el cach茅 para cargar im谩genes m谩s r谩pido

66

StreamController, sink, add y StreamBuilder

Conclusiones

67

隆Renovaremos este curso! Te quedan unos d铆as para concluirlo.

68

Conclusiones

No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Curso Avanzado de Flutter

Curso Avanzado de Flutter

Anah铆 Salgado D铆az de la Vega

Anah铆 Salgado D铆az de la Vega

Procesando datos con BLoC Pattern

55/68
Recursos

Aqu铆 est谩 el repositorio de esta clase.

Aportes 10

Preguntas 1

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

Ahora la forma de acceder a los datos del snapshot es

 placeListSnapshot.forEach((p) {
      cardProfilePlaces.add(CardProfile(Place(
          name: p['name'],
          description: p['description'],
          urlImage: p['urlImage'],
          likes: p['likes'])));
    });

Si les marca error en p.data[鈥榥ame鈥橾, agreguen el parentesis despues de data:

 profilePlaces.add(ProfilePlace(
          Place(
              name: p.data()['name'],
              description: p.data()['description'],
              urlImage: p.data()['urlImage'])
      ));

Las listas tambien se pueden inicializar con []

List<ProfilePlace> profilePlaces = [];

En el placeListStream que hemos programado, la manera en que se estan recuperando los datos tiene un problema. Dado que no se esta efectuando un filtro para la 鈥渃ollection鈥. Si entramos con otro usuario diferente al que hemos estado usando para a帽adir los registros, TAMBI脡N LE VAN A APARECER LOS REPORTES DEL OTRO USUARIO. Para arreglar eso se debe modificar el stream de la siguiente manera:

  Stream<QuerySnapshot> placesListStream = FirebaseFirestore.instance.collection(CloudFirestoreAPI().PLACES).where("userOwner", isEqualTo:  _db.doc("users/${FirebaseAuth.instance.currentUser!.uid}")).snapshots();

He instanciado 鈥淿db鈥 fuera de la clase ya que me marcaba error, justo debajao de donde se importan las librerias.

final FirebaseFirestore _db = FirebaseFirestore.instance;

Es importante construir el valor con 鈥淿db鈥 ya que el valor del userOwner al ser del tipo 鈥渞eferencia鈥 solo nos lo filtrara si lo que le pasamos es del tipo referencia.

Y de esta manera nos evitamos filtrar en el ciclo for, que a largo plazo ser铆a m谩s costoso si los usuarios y reportes crecen porque estar铆amos iterando en TODOS LOS REPORTES DE TODOS LOS USUARIOS.

En julio de 2022
Si les marca error cuando hacen :

userBloc.buildPlaces(snapshot.data.documents)

en julio de 2022 la manera correcta es:

userBloc.buildPlaces(snapshot.data.docs)

"Una vez que ya queda lista la lista", el mejor momento del curso!! XD

me gustaria saber si es buena practica esto de usar el widget ProfilePlace desde el cloud_firestore?
Segun lo que recuerdo de la arquitectura esto rompe completamente, seguramente funciona, pero por que hacerlo asi
O es la unica manera?

Tengo un error que a煤n no puedo resolver.

type 'DocumentReference' is not a subtype of type 'User'

Es a la hora de hacer la llamada a userBloc.buildPlaces(snapshot.data.documents);

Aqu铆 me perd铆 un poco otra vez pues omit铆 varias clases xD y me confund铆 u.u.