Необработанное исключение NOSUCHMETODERROR: метод ‘[]’ был вызван при нулевом значении во flutter

#flutter #dart

#flutter #dart

Вопрос:

Код представляет строку кода, которая содержит ошибки в соответствии со строкой, указанной консолью

Ошибка отображается в трех частях. первый:

новый FlickrPhotoList.FromJSON (пакет: flutter_app_new_flutter/flickerPhotoList.dart:22:26)


  import 'package:flutter_app_new_flutter/model.dart';

class FlickrPhotoList {
  int page;
  int pages;
  int perpage;
  int total;
  List<FlickrPhoto> photo;

  FlickrPhotoList({
    this.page,
    this.pages,
    this.perpage,
    this.total,
    this.photo
  });

  factory FlickrPhotoList.fromJson(Map<String, dynamic> parsedJson) {

    var list = parsedJson['photo'] as List;
    List<FlickrPhoto> photoList = list.map((i) => FlickrPhoto.fromJson(i)).toList();

    return FlickrPhotoList(
        page: parsedJson['page'],
        pages: parsedJson['pages'],
        perpage: parsedJson['perpage'],
        total: parsedJson['total'],
        photo: photoList);
  }
}
  

2-я ошибка показана ниже:

новый FlickrResult.FromJSON (пакет: flutter_app_new_flutter/flickerResult.dart:15:37)


 import 'package:flutter_app_new_flutter/flickerPhotoList.dart';

    class FlickrResult {
      FlickrPhotoList photos;
      String stat;
    
      FlickrResult({
        this.photos,
        this.stat
      });
    
      factory FlickrResult.fromJson(Map<dynamic, dynamic> parsedJson) {
    
        var photoList = FlickrPhotoList.fromJson(parsedJson['photos']);
    
        return FlickrResult(
            photos: photoList,
            stat: parsedJson['stat']
        );
      }
    }
  

вот третья ошибка:

_SearchState.getSearchWallpapers. (пакет: flutter_app_new_flutter/search.dart:47:33)


 getSearchWallpapers(String query) async{

    String requestUrl = "https://api.flickr.com/services/rest/?method=flickr.photos.searchamp;api_key=b099758ce0d1e1bf8697f8491f7fb5fcamp;format=jsonamp;nojsoncallback=1amp;safe_search=1amp;text=$query";
    var file = await DefaultCacheManager().getSingleFile(requestUrl);
    http.Response response = await http.get(requestUrl);
    String lines = await file.readAsString();


    setState(() {
      Map userMap = jsonDecode(lines);
      flickrData = FlickrResult.fromJson(userMap);
      resultsCount = flickrData.photos.photo.length;
    });
  }
  

Ответ №1:

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

 return FlickrPhotoList(
        page: parsedJson['page'], 
  

проверьте, что parsedJson предоставляет ‘страницу’; поэтому сначала запросите postman или любой другой и прочитайте ответ вашего API.

Второй будет работать, когда мы улучшим, когда для третьего, пожалуйста, также опубликуйте search.dart