首页 > 解决方案 > Flutter:StreamBuilder 调用了 3 次

问题描述

我有一个StreamBuilder,流来自firebase(云firestore),当我打印这个时, print(!snapshot.hasData); 我得到了这些结果(3次), true false true......

请注意:在 Firestore 上我有一些文档,当我在我的应用程序上打开此页面时,它会显示文档一秒钟然后消失,我不知道为什么?

我的代码在这里

import 'package:Tawseelat/ReadyToUse/DataBase.dart';
import 'package:Tawseelat/ReadyToUse/NavigationBarForUser.dart';
import 'package:Tawseelat/ReadyToUse/Whatsapp.dart';
import 'package:Tawseelat/ReadyToUse/constants.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';

class TakenOrder extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(
          'توصيلات',
          style: TextStyle(fontWeight: FontWeight.bold),
        ),
      ),
      body: StreamBuilder(
        stream: DataBase().takenOrder,
        builder: (context, snapshot) {
          print(!snapshot.hasData);
          if (!snapshot.hasData || snapshot.data.documents.length == 0) {
            return Center(child: Text('لا توجد طلبات حاليا'));
          } else {
            return ListView.builder(
              itemCount: snapshot.data.documents.length ?? 0,
              itemBuilder: (context, index) {
                var data = snapshot.data.documents[index];

                return SingleChildScrollView(
                    child: Card(
                  child: Column(
                    children: [
                      Text(
                        'لقد قمت بقبول هذا الطلب',
                      ),
                      Divider(),
                      Directionality(
                        textDirection: TextDirection.rtl,
                        child: Row(
                          mainAxisAlignment: MainAxisAlignment.spaceAround,
                          children: [
                            Text(
                              'من',
                              style: TextStyle(
                                  color: kPrimaryColor,
                                  fontWeight: FontWeight.bold),
                            ),
                            Text(
                              'الى',
                              style: TextStyle(
                                  color: kPrimaryColor,
                                  fontWeight: FontWeight.bold),
                            ),
                          ],
                        ),
                      ),
                      Directionality(
                        textDirection: TextDirection.rtl,
                        child: Row(
                          mainAxisAlignment: MainAxisAlignment.spaceAround,
                          children: [
                            Text(
                                '${data['fromAlmohafda']} ( ${data['fromAlmntaqa']} )'),
                            Text(
                                '${data['toAlmohafda']} ( ${data['toAlmntaqa']} )'),
                          ],
                        ),
                      ),
                      Divider(),
                      Row(
                        mainAxisAlignment: MainAxisAlignment.spaceBetween,
                        children: [
                          FlatButton.icon(
                              onPressed: () {
                                //TODO for Done
                                DataBase().orderComplate(data.id);
                              },
                              icon: Icon(
                                Icons.done_all,
                                color: kPrimaryColor,
                              ),
                              label: Get.width < 300
                                  ? Text('تم التسليم')
                                  : Container()),
                          FlatButton.icon(
                              onPressed: () {
                                Whatsapp().launchURL(data['posterNo']);
                              },
                              icon: Icon(
                                Icons.message,
                                color: kPrimaryColor,
                              ),
                              label: Text('لتواصل')),
                          FlatButton.icon(
                              onPressed: () {},
                              icon: Icon(
                                Icons.attach_money,
                                color: Colors.green,
                              ),
                              label: Text('${data['price']} OMR')),
                        ],
                      ),
                    ],
                  ),
                ));
              },
            );
          }
        },
      ),
      bottomNavigationBar: MyNavigationBarForUser(),
    );
  }
}

标签: firebaseflutterandroid-listviewscaffoldingstream-builder

解决方案


推荐阅读