我不斷收到此錯誤:
NoSuchMethodError(NoSuchMethodError:方法'map'在null上被呼叫。接收者:null嘗試呼叫:map(Closure:(動態)=> Name1Name2))
我正在努力解決這個錯誤。我確定我沒有正確映射資料。
我從中獲取資料并將資料發送到的假 REST API
"messagesBetweenTwoUsers": {
"Name1Name2": [
{
"senderName": "John",
"message": "How are you doing?"
}
]
}
這是我的獲取訊息檔案
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'messages_model.dart';
Future<List<MessageModel>> getMessages() async {
try {
var getResponse = await http.get(
Uri.parse("http://127.0.0.1:3000/messagesBetweenTwoUsers"),
);
if (getResponse.statusCode == 200) {
String getData = getResponse.body;
var jsonData =
jsonDecode(getData);
var getResult = jsonData["Name1Name2"].map(
(e) => Name1Name2.fromJson(e),
);
//here it throws me an error, in getResult, right when I am using map()
//NoSuchMethodError (NoSuchMethodError: The method 'map' was called on null.
//Receiver: null
//Tried calling: map(Closure: (dynamic) => Name1Name2))
return getResult;
} else {
return [];
}
} catch (error) {
debugPrint("ERROR IN FETCHING FROM GET-MESSAGE-API: $error");
}
return [];
}
我的模特班
import 'package:meta/meta.dart';
import 'dart:convert';
class MessageModel {
MessageModel({
required this.name1Name2,
});
final List<Name1Name2> name1Name2;
factory MessageModel.fromRawJson(String str) => MessageModel.fromJson(json.decode(str));
String toRawJson() => json.encode(toJson());
factory MessageModel.fromJson(Map<String, dynamic> json) => MessageModel(
name1Name2: List<Name1Name2>.from(json["name1name2"].map((x) => Name1Name2.fromJson(x))),
);
Map<String, dynamic> toJson() => {
"name1name2": List<dynamic>.from(name1Name2.map((x) => x.toJson())),
};
}
class Name1Name2 {
Name1Name2({
required this.senderName,
required this.message,
});
final String senderName;
final String message;
factory Name1Name2.fromRawJson(String str) => Name1Name2.fromJson(json.decode(str));
String toRawJson() => json.encode(toJson());
factory Name1Name2.fromJson(Map<String, dynamic> json) => Name1Name2(
senderName: json["senderName"],
message: json["message"],
);
Map<String, dynamic> toJson() => {
"senderName": senderName,
"message": message,
};
}
uj5u.com熱心網友回復:
您需要學習
當您正在查看/解碼 json 時,它是不正確的,因此以下網站將幫助您做到這一點 - quicktype。我強烈建議您使用不同的選項探索該網站。
正如@Mayo Win所說。您確實需要學習Null Safety功能。否則它會使你的代碼容易出錯。
從您的方法
getMessages()中只需呼叫以下命令 -
CustomDataModel customDataModel = customDataModelFromJson(response.bodyString ?? '');
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/510735.html
上一篇:MVCCore將LINQ物件傳遞給iPagedList
下一篇:Java中http回應的字符集
