Как заставить будущий виджет автоматически загружать данные при наличии подключения - PullRequest
0 голосов
/ 25 октября 2019

Я пытаюсь создать приложение с информацией о продукте, я использую будущего разработчика для создания списка категорий. Я сталкиваюсь с двумя проблемами: 1. когда приложение изначально отключено, а затем становится подключенным, оно не загружает данные. 2. Есть ли способ получить длину снимков. Я вставлю код ниже:


FutureBuilder(
                        future: getAllCategory(),
                        builder: (BuildContext context, AsyncSnapshot snapshot) {
                          if (snapshot.data == null) {
                            return Center(
                              child: Container(
                                child: CircularProgressIndicator(),
                              ),
                            );
                          } else {
                            return ListView.builder(
                                scrollDirection: Axis.horizontal,
                                itemCount: categorylist.length != 0 || categorylist.length!= null ?  categorylist.length:0,

                                shrinkWrap: true,
                                itemBuilder: (context, index) {
                                  return GestureDetector(
                                    onTap: () async {
                                      pr.show();

                                      print('clicked custom category');
                                      print(categorylist[index].catName);
                                      print(categorylist[index].catId);

                                      await getAllProductsInCategory(categorylist[index].catId);


                                      setState(() {
                                        catId = categorylist[index].catId;
                                        myinitlist.clear();
                                        myinitlist = List.from(productList);
                                        pr.hide();
                                        _selectedIndex = index;

                                      });





                                    },
                                    child: Column(
                                      crossAxisAlignment: CrossAxisAlignment.center,
                                      children: <Widget>[
                                        Card(
                                          color: _selectedIndex != null && _selectedIndex == index
                                              ? selectedColor
                                              : defColor,
                                          elevation: _selectedIndex != null && _selectedIndex == index
                                              ? 4.0
                                              : 1.0,
                                          child: Center(
                                            child: Padding(
                                              padding: const EdgeInsets.all(3.0),
                                              child: Container(

                                                child: Padding(
                                                  padding: const EdgeInsets.all(4.0),
                                                  child: Column(
                                                    children: <Widget>[
                                                      Image.network(
                                                        categorylist[index].catThumbnail,
                                                        width: 80.0,
                                                        height: 50.0,
                                                        scale: 1.0,
                                                      ),
                                                      Padding(
                                                        padding: const EdgeInsets.only(top: 4.0),
                                                        child: Text(
                                                          categorylist[index].catName,
                                                          textAlign: TextAlign.center,
                                                          style: TextStyle(color: Colors.black, fontSize: 10.0, fontWeight: FontWeight.w500),
                                                        ),
                                                      )
                                                    ],
                                                  ),
                                                ),
                                              ),
                                            ),
                                          ),
                                        ),
                                      ],
                                    ),
                                  );
                                });
                          }
                        },
                      ),

Я думаю, если есть какой-нибудь способ получить длину снимков, то я могу решить свою первую проблему.

1 Ответ

0 голосов
/ 25 октября 2019

Я изменил код следующим образом

FutureBuilder(
                        future: getAllCategory(),
                        builder: (BuildContext context, AsyncSnapshot snapshot) {
                          if (!snapshot.hasData) {
                            return Center(
                              child: Container(
                                child: CircularProgressIndicator(),
                              ),
                            );
                          } else {
                            print('snapshot length ${snapshot.data.length}');
                            return ListView.builder(
                                scrollDirection: Axis.horizontal,
                                itemCount: snapshot.data.length,
                                shrinkWrap: true,
                                itemBuilder: (context, index) {
}

...