Не обработанное исключение: тип 'Null' не является подтипом типа 'int' при приведении типа

factory Account.fromJson(Map<String, dynamic> json) {
    return Account(
        json["id"],
        json["email"],
        json["description"],
        json["first_name"],
        json["last_name"],
        json["phone"],
        json["username"],
        json["image"],
        json["email_confirmed"],
        json["reviews_media"] != null
            ? double.parse(json["reviews_media"])
            : (json["reviews_media"] as int).toDouble(),
        json["holiday_mode"],
        json["identity_code"],
        json["residency_city"],
        json["birthday"] != null
            ? DateFormat("yyyy-MM-dd").parse(json["birthday"])
            : null);
  }

Проблема здесь :

json["reviews_media"] != null
            ? double.parse(json["reviews_media"])
            : (json["reviews_media"] as int).toDouble(),

Если json["reviews_media"] является NOT null, вы разбираете его как double, что является файлом, но другая часть условия неверна. Вы знаете, что правильной частью является null, но не можете привести ее к int. Вы должны привести условие null по умолчанию к чему-то вроде этого :

json["reviews_media"] != null
            ? double.parse(json["reviews_media"])
            : 0.0,

Решение: Замена int на int? (если сделать поля необязательными, это решит проблему).

Вернуться на верх