Может ли кто-нибудь проверить мой код и увидеть, что не так? - PullRequest
0 голосов
/ 16 июня 2020

Я получаю данные из коллекции firebase на страницу, но страница не возвращает никаких данных. Ошибок нет, но я не получаю никаких данных. Страница застревает на круговом индикаторе выполнения (я назначил циклический прогресс оператору if, когда нет данных).

Вот код (примечание: shopRef объявлен на домашней странице):

class Live extends StatefulWidget {

  @override
  _LiveState createState() => _LiveState();
}

class _LiveState extends State<Live> {
getProducts()async {
  QuerySnapshot snapshot = await shopRef
  .orderBy('timestamp', descending: true).getDocuments();
    List<ShopItem> shopItems = [];
    snapshot.documents.forEach((doc) {
      shopItems.add(ShopItem.fromDocument(doc));
    });
    return shopItems;
}
  @override
  Widget build(BuildContext context) {
    return Scaffold(appBar: AppBar(backgroundColor: kPrimaryColor,
          title: Text(   'FASHOWtv',
            style: TextStyle(
                fontFamily :"MajorMonoDisplay",
                fontSize:  35.0 ,
                color: Colors.white),),
          iconTheme: new IconThemeData(color: kSecondaryColor),

            ),

      backgroundColor: kSecondaryColor,
      body: Container(
          child: FutureBuilder(
            future: getProducts(),
            builder: (context, snapshot) {
              if (!snapshot.hasData) {
                return circularProgress();
              }
              return Column(
                children: snapshot.data,
              );
            },
          ),
        ),

      floatingActionButton: FloatingActionButton(
        backgroundColor: Colors.black38,
        onPressed: () { Navigator.push(context, MaterialPageRoute(builder: (context) =>WalletPage()));
        },
        child: Icon(Icons.add_to_queue),
      ),
    );
  }
}
Widget shopmediaPreview;
class ShopItem extends StatelessWidget {
  final String username;
  final String prodId;
  final String ownerId;
  final String photoUrl;
  final String shopmediaUrl;
  final String productname;
  final String price;
  final String userId;
   ShopItem({
     this.ownerId,
     this.prodId,
     this.shopmediaUrl,
     this.username,
     this.photoUrl,
     this.price,
     this.productname,
     this.userId,
   });

    factory ShopItem.fromDocument(DocumentSnapshot doc) {
    return ShopItem(
      username: doc['username'],
      price: doc['price'],
      productname: doc['productname'],
      shopmediaUrl: doc['shopmediaUrl'],
       userId: doc['userId'],
      prodId: doc['prodId'],
      ownerId: doc['ownerId'],
      photoUrl: doc['photoUrl'],

    );
  }
showProduct(context) {
    Navigator.push(
      context,
      MaterialPageRoute(
        builder: (context) => ProductScreen(
          prodId: prodId,
          userId: ownerId,
        ),
      ),
    );
}

configureshopmediaPreview(context){
  shopmediaPreview = GFButton(
    onPressed: () => showProduct(context) ,
    text: "More",
    icon: Icon(Icons.card_travel),
    shape: GFButtonShape.pills,

  );
}
  @override
  Widget build(BuildContext context) {
    configureshopmediaPreview(context);
    return  Container(
                                height: 500,
                                margin: EdgeInsets.only(
                                    top: 1.0, left: 10.0, right: 10.0, bottom: 1.0),
                                child: Column( children: <Widget>[
                                  SizedBox( height:1.0,),
                                Stack(
                                  children: <Widget>[
                                Container(
                                child:Row(
                                  children: <Widget>[
                                  Expanded(
                                  child: Container(
//                                width: 360,
                                  height: 400.0,

                                  child:AspectRatio(
                                    aspectRatio: 16 / 9,
                                                                      child: Container(
                                      decoration: BoxDecoration(
                    image: DecorationImage(
                      fit: BoxFit.cover,
                      image: CachedNetworkImageProvider(shopmediaUrl),
                    )),
                                    ),
                                  ),
                                ),
                              ),

                            ],

                            ),
                            ),
                            Expanded(
                              child: Positioned(
                              bottom: 10,
                              left: 10,
                              child: GestureDetector(
                                onTap: showProfile(context, profileId: userId),
                                child: Container(
                                height: 40,
                                width: 40,
                                child: CircleAvatar(
              backgroundImage: CachedNetworkImageProvider(shopmediaUrl),
            ),

                                ),
                              ),
                              ),
                              ),
                              Expanded(
                              child: Positioned(
                              bottom: 20,
                              left: 60,
                              child: Container(
                              child: Text(username,style: TextStyle(color: Colors.white,fontWeight:FontWeight.bold),),

                              ),
                              ),
                              ),


                            Row(
                              mainAxisAlignment: MainAxisAlignment.end,
                              children: [shopmediaPreview],
                            ),

                            ],

                            ),
                            Row(
                            children: <Widget>[
                            Container(
                            child: Text(productname,style: TextStyle(color: kText,fontSize: 30.0,fontWeight:FontWeight.bold),),
                            ),
                            ],
                            ),
                            Row(
                            children: <Widget>[
                            Container(  child: Text('₹',style: TextStyle(color: kText,)),
                            ),
                            Container(
                            child: Text(price,style: TextStyle(color: kText,fontSize: 20.0,fontWeight:FontWeight.bold),),
                            ),

                            ],
                            ),
                            Divider(color: kGrey,),
                            ],

                            ),
                            );
  }
}
showProfile(BuildContext context, {String profileId}) {
  Navigator.push(
      context,
      MaterialPageRoute(
          builder: (context) => Profile(
            profileId: profileId,
          )));
}
...