簡體   English   中英

未處理的異常 NoSuchMethodError:方法 '[]' 在 Flutter 中被調用為 null

[英]Unhandled Exception NoSuchMethodError: The method '[]' was called on null in flutter

Code代表根據控制台指出的那行有錯誤的代碼行

錯誤顯示在三個部分。 第一:

新的 FlickrPhotoList.fromJson (package: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);
  }
}

第二個錯誤顯示在下面:

新的 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.search&api_key=b099758ce0d1e1bf8697f8491f7fb5fc&format=json&nojsoncallback=1&safe_search=1&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;
    });
  }

昨天發生在我身上,而不是某個網站,我通過返回帶有標題的響應來修復它。 No such Method 錯誤是當您的模型與來自網站的 API 響應不匹配或服務器未提供您的請求示例時,這是錯誤

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

檢查 parsedJson 是否提供“頁面”; 所以首先向郵遞員或任何人發出請求並閱讀您的 API 響應。

當我們改進時,第二個將起作用,第三個也請發布 search.dart

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM