繁体   English   中英

如何使用 StreamBuilder 在 Flutter 中观察 Firebase 的变化

[英]How to observe Firebase changes in Flutter using StreamBuilder

我正在尝试观察 Firebase 集合的变化。 在第一次运行中,Listview 没有生成。 在 Firebase 上更改数据后,列表视图会正确呈现,但会使用之前的快照,因为我在屏幕上看到了我的旧数据。

有什么想法可以找到错误吗?

@override
  Widget build(BuildContext context) {
    return BlocListener<VoteCubit, VoteState>(
      listener: (context, state) {
        if (state.status == FormStatus.success) {
          print("Success");
        } else if (state.status == FormStatus.inprogress) {
          print("In progress");
        } else if (state.status == FormStatus.fail) {
          print("fail");
        } else {
          print("Empty Area");
        }
      },
      child: StreamBuilder<QuerySnapshot>(
        stream: FirebaseFirestore.instance.collection('liveSurvey').snapshots(),
        builder: (context, snapshot) {
          final voteCubit = context.read<VoteCubit>();
          final voteState = voteCubit.state;
          if (snapshot.hasData) {
            voteCubit.getAllRooms(snapshot);
            print("Here");
            return ListView.builder(
              itemCount: voteState.rooms.length,
              itemBuilder: (context, i) {
                print("Inside Listview");
                . . .

使用像这样的流生成器来获取实时数据。

child: StreamBuilder<QuerySnapshot>(
        stream: FirebaseFirestore.instance
            .collection("travellers/India/details")
            .where(
              'firestore_id',
              isEqualTo: widget.get_firestore_id,
            )
            .snapshots(),
        builder:
            (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {

if (snapshot.connectionState == ConnectionState.waiting) {
    print('play lodader')
}else if (snapshot.hasData) {
print('your_ui_here')
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM