#flutter #dart #flutter-layout #flutter-dependencies #flutter-animation
#трепетание #дротик #флаттер-макет #зависимости от флаттера #флаттер-анимация
Вопрос:
Я новичок в flutter, мне удалось успешно вызвать API, однако, когда я изменил свой класс модели, добавив map<String,dynamic>, я получаю следующее ниже исключение Необработанное исключение: не удалось преобразовать объект в кодируемый объект: _LinkedHashMap
Мой класс модели для справки выглядит следующим образом
class Profile {
String id;
String userId;
String username;
String password;
String email;
String arabicFullNam;
String englishFullNam;
String phoneNumber;
String civilId;
int type;
bool success;
List<dynamic> errors;
Map<String,dynamic>body;
Profile({this.id, this.userId,this.username, this.password, this.arabicFullNam, this.englishFullNam, this.email,this.civilId, this.errors,this.success,this.type,this.body,this.phoneNumber});
factory Profile.fromJson(Map<String, dynamic> map) {
return Profile(
id: map["id"], userId: map["userId"],phoneNumber: map["phoneNumber"],username: map["username"], password: map["password"], englishFullNam: map["fullnameEn"], arabicFullNam: map['fullnameAr'], email: map['email'],civilId:map['civilId'], errors: map['errors'], success: map['success'],type: map['type'],body: map['body']);
}
Map<String, dynamic> toJson() {
return {"id": id, "userId": userId,"username": username, phoneNumber: "phoneNumber", "password": password, "fullnameEn": englishFullNam, "fullnameAr": arabicFullNam,"email": email, "civilId": civilId,"success": success, "type": type, "body": body};
}
@override
String toString() {
return 'Profile{id: $id,userId: $userId, username: $username, password: $password, email: $email, fullnameEn: $englishFullNam, fullnameAr: $arabicFullNam, civilId: $civilId, errors: $errors, success: $success, type: $type, body: $body, phoneNumber: $phoneNumber }';
}
}
List<Profile> profileFromJson(String jsonData) {
final data = json.decode(jsonData);
return List<Profile>.from(data.map((item) => Profile.fromJson(item)));
}
Profile postFromJson(String str) {
final jsonData = json.decode(str);
return Profile.fromJson(jsonData);
}
String profileToJson(Profile data) {
final jsonData = data.toJson();
print("##--tojson" jsonData.toString());
return json.encode(jsonData);
}
Любая помощь будет высоко оценена
Комментарии:
1. взгляните на этот отрывок flutter.dev/docs/development/data-and-backend/ …
Ответ №1:
Попробуйте это
class Profile {
String id;
String userId;
String username;
String password;
String email;
String arabicFullNam;
String englishFullNam;
String phoneNumber;
String civilId;
int type;
bool success;
List<dynamic> errors;
Map<String, dynamic> body;
Profile({
this.id,
this.userId,
this.username,
this.password,
this.email,
this.arabicFullNam,
this.englishFullNam,
this.phoneNumber,
this.civilId,
this.type,
this.success,
this.errors,
this.body,
});
Map<String, dynamic> toMap() {
return {
'id': id,
'userId': userId,
'username': username,
'password': password,
'email': email,
'arabicFullNam': arabicFullNam,
'englishFullNam': englishFullNam,
'phoneNumber': phoneNumber,
'civilId': civilId,
'type': type,
'success': success,
'errors': errors,
'body': body,
};
}
factory Profile.fromMap(Map<String, dynamic> map) {
if (map == null) return null;
return Profile(
id: map['id'],
userId: map['userId'],
username: map['username'],
password: map['password'],
email: map['email'],
arabicFullNam: map['arabicFullNam'],
englishFullNam: map['englishFullNam'],
phoneNumber: map['phoneNumber'],
civilId: map['civilId'],
type: map['type'],
success: map['success'],
errors: List<dynamic>.from(map['errors']),
body: Map<String, dynamic>.from(map['body']),
);
}
String toJson() => json.encode(toMap());
factory Profile.fromJson(String source) =>
Profile.fromMap(json.decode(source));
@override
String toString() {
return 'Profile(id: $id, userId: $userId, username: $username, password: $password, email: $email, arabicFullNam: $arabicFullNam, englishFullNam: $englishFullNam, phoneNumber: $phoneNumber, civilId: $civilId, type: $type, success: $success, errors: $errors, body: $body)';
}
}
Комментарии:
1. попробуйте заменить
factory Profile.fromJson(Map<String, dynamic> map)
вышеперечисленное. это в основном от этого метода. Я только что добавил эту строкуbody: Map<String, dynamic>.from(map['body'])
2. можете ли вы добавить необработанные данные json выше.
3. конечно…. ##—tojson{идентификатор: null, идентификатор пользователя: null, имя пользователя: gvv, null: номер телефона, пароль: 5677v, полное имя: null, Полное имя: null, адрес электронной почты: null, civilId: null, успех: null, тип: null, тело: null}
4. Я отредактировал свой ответ и создал модель. Это все, что я могу помочь
5. большое спасибо .. однако я догадался об этом . однако проблема заключалась в том, что при передаче я указывал значение вместо ключа, поэтому необработанный json имел null:PhoneNumber при передаче .. его разрешили. действительно спасибо за ваш жест.
Ответ №2:
Обязательно проверьте необработанный json, который вы передаете или конвертируете. у меня возникла проблема с null:PhoneNumber вместо PhoneNumber:null.