Функция itemBuilder не выполняется

#listview #dart #flutter

#listview #dart #флаттер

Вопрос:

Я использую ListView Builder для построения списка категорий из Future<List<Category>> , после отладки моего кода все в порядке, за исключением того, что itemBuilder функция не выполняется, когда выполняется отладка itemCount : snapshot.data.length , но не выполняется itemBuilder, вот мой код:

 var categoryIcon = Container(
      color: Colors.white,
      padding: EdgeInsets.only(top: 20.0),
      alignment: AlignmentDirectional.centerStart,
      child: Column(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: <Widget>[
          Padding(
            padding: EdgeInsets.only(left: 20.0, top: 0.0),
            child: Text(
              "Categories ",
              style: TextStyle(
                  fontSize: 13.5,
                  fontFamily: "Sans",
                  fontWeight: FontWeight.w700),
            ),
          ),
          FutureBuilder(
            future: getCategories(),
            builder: (BuildContext context, AsyncSnapshot snapshot){

              if(snapshot.data == null){
                return Container(

                );
              }
              else{
                return ListView.builder(
                    itemBuilder: (BuildContext context, int index){
                      return new Container(
                          child: new Text(snapshot.data[index].name)););
                    },
                    itemCount : snapshot.data.length
                );
              }
            }
          ),
          /// Get class CategoryIconValue
          Padding(padding: EdgeInsets.only(bottom: 30.0))
        ],
      ),
    );
  

вот моя функция для синтаксического анализа Json :

   Future<List<Category>> getCategories() async{
    var data = await http.get("http://192.168.0.134:9091/Categorie");
    var extractData = json.decode(data.body);
    List<Category> listCat = [];
    for(var c in extractData){
      Category cat = new Category(c["id"],c["name"]);
      listCat.add(cat);
    }
    print(listCat.length);
    return listCat;
  } 
  

Ответ №1:

Если вы новичок в работе с API в Flutter, будет полезно прочитать об этом, вы можете взглянуть на это, написанное Пуджей, и удивительный пост о том, что именно вы делаете, работая с FutureBuilder.

Надеюсь, это поможет.