我设法从firebase实时数据库中获取数据,但我不能在应用程序中使用它。根据数据,我想显示不同的屏幕(活动)。例如:如果用户已付费,则显示"已付费";屏幕,否则显示"立即付款";屏幕上。我不能使用内部使用的变量,例如:paid_status
,从下面的范围之外。因此,我在另一个文件中将它声明为全局变量。
package_stream.listen((DatabaseEvent event) {
globals.paid_status = event.snapshot.value;
});
上面的代码,它工作,但每次,用户关闭应用程序并再次登录,变量值被改变或保持旧(在数据库更新后)。我想从数据库中获取值,每次用户打开应用程序或注销并再次登录。
我使用下面的代码来获取数据:
setState(() {
DatabaseReference paid_stat = db_reference.child('Records/${uid}/Paid');
// Get the Stream
Stream<DatabaseEvent> package_stream = paid_stat.onValue;
// Subscribe to the stream!
package_stream.listen((DatabaseEvent event) {
globals.paid_status = event.snapshot.value;
});
});
我自己解决了:
- 我创建了一个
async
Future函数,使用get()
返回snapshot
。 - 使用
snapshot.value
,我展示了不同的屏幕/活动。