Я создаю приложение для электронной коммерции для самостоятельной практики, используя Flutter (мой серверный интерфейс находится на Laravel). Каждый раз, когда я создаю класс модели, я всегда сталкиваюсь с проблемами в методах fromMap.
В настоящее время я не могу сохранить свой ответ API на заказ (класс Orders и orderItems приведен ниже). Ошибка говорит
Unhandled Exception: type 'List' is not a subtype of type 'List'
in type cast
вот как я пытаюсь сохранить ответ API
Orders orders = Orders(
List.from(response.data)
.map((item) => OrderItem.fromMap(item))
.toList(),
);
Класс заказов
class Orders {
final List orders;
Orders(
this.orders,
);
Orders copyWith({
List? orders,
}) {
return Orders(
orders ?? this.orders,
);
}
Map toMap() {
return {
'orders': orders.map((x) => x.toMap()).toList(),
};
}
factory Orders.fromMap(Map map) {
return Orders(
List.from(
(map['orders'] as List).map(
(x) => OrderItem.fromMap(x as Map),
),
),
);
}
String toJson() => json.encode(toMap());
factory Orders.fromJson(String source) =>
Orders.fromMap(json.decode(source) as Map);
@override
String toString() => 'Orders(orders: $orders)';
@override
bool operator ==(covariant Orders other) {
if (identical(this, other)) return true;
return listEquals(other.orders, orders);
}
@override
int get hashCode => orders.hashCode;
}
Класс OrderItems
class OrderItem {
final num id;
final List pid;
OrderItem(
this.id,
this.pid,
);
OrderItem copyWith({
num? id,
List? pid,
}) {
return OrderItem(
id ?? this.id,
pid ?? this.pid,
);
}
Map toMap() {
return {
'id': id,
'pid': pid,
};
}
factory OrderItem.fromMap(Map map) {
return OrderItem(
map['id'] as num,
List.from(
(map['pid'] as List),
),
);
}
String toJson() => json.encode(toMap());
factory OrderItem.fromJson(String source) =>
OrderItem.fromMap(json.decode(source) as Map);
@override
String toString() => 'OrderItem(id: $id, pid: $pid)';
@override
bool operator ==(covariant OrderItem other) {
if (identical(this, other)) return true;
return other.id == id && listEquals(other.pid, pid);
}
@override
int get hashCode => id.hashCode ^ pid.hashCode;
}
Вот как выглядит ответ API
[
{
"id": 1,
"uid": "1",
"pid": [
1,
2
],
"created_at": "2022-07-16T10:34:51.000000Z",
"updated_at": "2022-07-16T10:34:51.000000Z"
},
{
"id": 2,
"uid": "1",
"pid": "[2,3]",
"created_at": "2022-07-16T12:19:15.000000Z",
"updated_at": "2022-07-16T12:19:15.000000Z"
}
]
Подробнее здесь: https://stackoverflow.com/questions/730 ... data-class
Класс данных Flutter/Dart ⇐ Android
Форум для тех, кто программирует под Android
1736028365
Anonymous
Я создаю приложение для электронной коммерции для самостоятельной практики, используя Flutter (мой серверный интерфейс находится на Laravel). Каждый раз, когда я создаю класс модели, я всегда сталкиваюсь с проблемами в методах fromMap.
В настоящее время я не могу сохранить свой ответ API на заказ (класс Orders и orderItems приведен ниже). Ошибка говорит
Unhandled Exception: type 'List' is not a subtype of type 'List'
in type cast
вот как я пытаюсь сохранить ответ API
Orders orders = Orders(
List.from(response.data)
.map((item) => OrderItem.fromMap(item))
.toList(),
);
[b]Класс заказов[/b]
class Orders {
final List orders;
Orders(
this.orders,
);
Orders copyWith({
List? orders,
}) {
return Orders(
orders ?? this.orders,
);
}
Map toMap() {
return {
'orders': orders.map((x) => x.toMap()).toList(),
};
}
factory Orders.fromMap(Map map) {
return Orders(
List.from(
(map['orders'] as List).map(
(x) => OrderItem.fromMap(x as Map),
),
),
);
}
String toJson() => json.encode(toMap());
factory Orders.fromJson(String source) =>
Orders.fromMap(json.decode(source) as Map);
@override
String toString() => 'Orders(orders: $orders)';
@override
bool operator ==(covariant Orders other) {
if (identical(this, other)) return true;
return listEquals(other.orders, orders);
}
@override
int get hashCode => orders.hashCode;
}
[b]Класс OrderItems[/b]
class OrderItem {
final num id;
final List pid;
OrderItem(
this.id,
this.pid,
);
OrderItem copyWith({
num? id,
List? pid,
}) {
return OrderItem(
id ?? this.id,
pid ?? this.pid,
);
}
Map toMap() {
return {
'id': id,
'pid': pid,
};
}
factory OrderItem.fromMap(Map map) {
return OrderItem(
map['id'] as num,
List.from(
(map['pid'] as List),
),
);
}
String toJson() => json.encode(toMap());
factory OrderItem.fromJson(String source) =>
OrderItem.fromMap(json.decode(source) as Map);
@override
String toString() => 'OrderItem(id: $id, pid: $pid)';
@override
bool operator ==(covariant OrderItem other) {
if (identical(this, other)) return true;
return other.id == id && listEquals(other.pid, pid);
}
@override
int get hashCode => id.hashCode ^ pid.hashCode;
}
Вот как выглядит ответ API
[
{
"id": 1,
"uid": "1",
"pid": [
1,
2
],
"created_at": "2022-07-16T10:34:51.000000Z",
"updated_at": "2022-07-16T10:34:51.000000Z"
},
{
"id": 2,
"uid": "1",
"pid": "[2,3]",
"created_at": "2022-07-16T12:19:15.000000Z",
"updated_at": "2022-07-16T12:19:15.000000Z"
}
]
Подробнее здесь: [url]https://stackoverflow.com/questions/73004239/flutter-dart-data-class[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия