【发布时间】:2020-08-01 20:31:25
【问题描述】:
我有一个用户列表和他们的分数,我想在任何分数发生变化或新用户添加到行列时建立一个实时排行榜。在flutter的firebase_database SDK中,有onChildAdded,onChildChanged的方法,但是如果我想建立这个排行榜,其中一些用户在比赛开始之前就存在并且他们有一些分数。如何创建实时排行榜?
我现在的基本代码。
在user 提供者中定义的函数。
Stream getAllUsers() {
return rtdb.child('ranks').orderByChild('score').onValue;
}
排行榜.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');
}
},
),
);
}
}
【问题讨论】:
标签: flutter firebase-realtime-database dart