Как создать список из базы данных в реальном времени и обновить ListView во Flutter при изменении данных? - PullRequest
0 голосов
/ 19 апреля 2020

У меня есть список пользователей с их оценкой, и я хочу создать живую таблицу лидеров, когда меняется какой-либо счет или добавляется новый пользователь в рейтинге. В пакете Firebase_database flutter есть методы для onChildAdded, onChildChanged, но что если я захочу создать эту таблицу лидеров, где некоторые пользователи будут существовать до начала соревнования и у них будет некоторый счет. Как я могу создать таблицу лидеров в реальном времени? Мой базовый c код на данный момент.

Функция определена в user провайдере.

Stream getAllUsers() {
    return rtdb.child('ranks').orderByChild('score').onValue;
  }

Leaderboard.dart

import 'package:dating_app/providers/user.dart';
import 'package:dating_app/widgets/loader.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';

class LeaderBoard extends StatefulWidget {
  @override
  _LeaderBoardState createState() => _LeaderBoardState();
}

class _LeaderBoardState extends State<LeaderBoard> {
  @override
  Widget build(BuildContext context) {
    return Container(
      child: StreamBuilder(
        stream: Provider.of<User>(context, listen: false).getAllUsers(),
        builder: (context, snapshot){
          if(!snapshot.hasData){
            return Loader();
          }else{
            print(snapshot.data);
            return Text('Hello World');
          }
        },
      ),
    );
  }
}

enter image description here

1 Ответ

0 голосов
/ 19 апреля 2020

что если я хочу создать эту таблицу лидеров, где некоторые пользователи существуют до начала соревнования, и у них есть некоторый балл

Когда вы присоединяете своего слушателя, вызывается onChildAdded для каждого существующего дочернего узла, который сразу совпадает с местоположением.

Из документации прослушивание дочерних событий :

onChildAdded() Извлечение списков элементов или слушайте дополнения к списку предметов. Этот обратный вызов запускается один раз для каждого существующего дочернего элемента , а затем снова каждый раз, когда в указанный путь добавляется новый дочерний элемент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...