如何在Flutter中将Firebase实时数据库读取为“字符串”(无窗口小部件,streambuilder)?

时间:2020-05-16 08:20:14

标签: flutter firebase-realtime-database

我想在不使用streambuilder的情况下读取firebase RTDB。

我可以使用期货或提供者吗?如果是这样,我应该如何处理?

DatabaseReference databaseReference = FirebaseDatabase().reference();

class _BatteryStateReaderState extends State<BatteryStateReader> {
  @override
  Widget build(BuildContext context) {
    return StreamBuilder(
      stream: databaseReference.child("robot").onValue,
      builder: (context, AsyncSnapshot<Event> snap) {
        if (!snap.hasData) return Text("loading...");
        return Text(snap.data.snapshot.value["battery"].toString());
      }, 
    );
  }
}

firebase数据库:

{ 
  robot: {
    battery : 88
  }
}

1 个答案:

答案 0 :(得分:0)

要获取Future<DataSnapshot>而不是事件流,可以在once()上使用DatabaseReference调用。请参阅once() method上的FlutterFire文档以及example of that library中的以下代码片段:

database.reference().child('counter').once().then((DataSnapshot snapshot) {
  print('Connected to second database and read ${snapshot.value}');
});