es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo obtener datos de una base de datos en tiempo real de manera sencilla en Flutter?

Actualmente estoy usando Firestore y Realtime Database al mismo tiempo. Configuro y recupero datos de Firestore de la manera más simple y efectiva en el código, pero para la base de datos en tiempo real, configuro los datos pero no pude recuperarlos de la misma manera que lo hago con Firestore. En resumen, quiero hacer lo mismo que hago con el código de Firestore en el código de la base de datos en tiempo real.

Aquí está mi código:

// Obtener datos de Firestore

Stream getData() async{
final user = FirebaseAuth.instance.currentUser;
yield
FirebaseFirestore.instance.collection(‘users’).doc(user.uid).snapshots();
}

// Devolvemos los datos en StreamBuilder (No se necesitan listas o ListView.Builder aquí)

@override
Widget build(BuildContext context) {

return StreamBuilder(
  stream: getData(),
  builder: (context, snapshot) { 

    //--------------------------------------
    // Estas ecuaciones provienen de Firestore
    //--------------------------------------

    int currentWater ()=> snapshot.data['currentLitersAmount'];

    int remainingWater () => snapshot.data['currentLitersAmount'] <= snapshot.data['recomendedLitersAmount'] ? snapshot.data['recomendedLitersAmount'] - snapshot.data['currentLitersAmount'] : 0;

    double progress ()=> snapshot.data['currentLitersAmount'] / snapshot.data['recomendedLitersAmount']; 

Por lo tanto, ¿cómo hacer lo mismo aquí para la base de datos en tiempo real?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Puede utilizar el mismo enfoque para la Base de Datos en Tiempo Real que utilizó para Firestore. Puede utilizar un StreamBuilder para obtener los datos de la Base de Datos en Tiempo Real y luego utilizar las mismas ecuaciones para calcular los valores.

    Aquí hay un ejemplo de cómo obtener los datos de la Base de Datos en Tiempo Real:

    Stream<DataSnapshot> getData() async* {
        final usuario = FirebaseAuth.instance.currentUser; 
        yield* FirebaseDatabase.instance.reference().child('usuarios/${usuario.uid}').onValue;
    }
    

    Luego, puede utilizar las mismas ecuaciones para calcular los valores:

    int currentWater ()=>  snapshot.value['currentLitersAmount'];
    
    int remainingWater () => snapshot.value['currentLitersAmount'] <= snapshot.value['recomendedLitersAmount'] ? snapshot.value['recomendedLitersAmount'] - snapshot.value['currentLitersAmount'] : 0;
    
    double progress ()=> snapshot.value['currentLitersAmount'] / snapshot.value['recomendedLitersAmount'];
    

Comments are closed.