snapshot.hasData возвращает пустой массив

#android #api #flutter #dart

#Android #API #трепетание #dart

Вопрос:

Я пытаюсь получить данные для отображения в виде списка, но, к сожалению, я сталкиваюсь с ошибкой, поскольку снимок возвращает пустые значения

Ниже приведен код для моего API

  static Future<List<Permission>> getPermissionData() async {
    String ruhusa = 'permission';
    var response = await http.get(mainUrl   ruhusa,
          headers: setHeader(accessKey.accessKey));

      List<Permission> permissions = [];
      if(response.statusCode == 200){

        print(response.statusCode);

        Map<String, dynamic> body = jsonDecode(response.body);
        // print(response.body);
        for(var item in body['msg']){
          Permission permission = Permission.fromJson(item);
          permissions.add(permission);
          // return permissions; 
        }
        return permissions;
      }  
      // print(permissions); 
      return permissions; 

  }
 

Это код, который я хочу отобразить с помощью future builder

  body: FutureBuilder(
        future: PermissionService.getPermissionData(),
        builder: (BuildContext context, AsyncSnapshot<List<Permission>> snapshot) {
          if (snapshot.connectionState == ConnectionState.done) {
            if (snapshot != null) {
              print("This is ${snapshot.data}");
              return ListView.builder(
                itemCount: snapshot.data?.length ?? 0,
                itemBuilder: (context, index) {
                  return GestureDetector(
                    onTap: () {
                      Navigator.pushNamed(context, permissionSpecificRoute,
                          arguments: snapshot.data[index]);
                    },
                    child: PermissionCard(
                      permission: snapshot.data[index],
                    ),
                  );
                },
              );
            } else if(snapshot.hasError) {
               return Center(child: Text("Oops error issues is ${snapshot.hasError}"));
            }
            else {
              return Center(child: Text('No permissions requested'));
            }
          } else {
            return PageLoader();
          }
        },
      ),
 

Когда я пытаюсь распечатать его в своей консоли, он возвращается

Это []

Любой, кто может помочь, пожалуйста, что мне сделать, чтобы снимок получал реальные данные

Комментарии:

1. Какова ценность этого отпечатка print(response.body); ?

2. он возвращает ответ от API, означает, что я получаю ответ

3. Убедитесь Permission.fromJson(item) , что все работает нормально, попробуйте отладить его и посмотрите, возможно, произошла ошибка синтаксического анализа, поэтому возвращается пустой массив (потому что вы уже инициализировали его как пустой массив)

4. Вы уверены, что ваш цикл for for(var item in body['msg']){ работает?

5. я пытаюсь напечатать все, что находится внутри for(..), но я ничего не получаю