Flutter - Сериализация с использованием пакета Freezed не работает - PullRequest
0 голосов
/ 12 июля 2020

См. Следующие коды

part 'order.g.dart';
part 'order.freezed.dart';
@freezed
abstract class Order with _$Order{
  const factory Order({List<Item> items}) = _Order;
  factory Order.fromJson(Map<String,dynamic> json) => _$OrderFromJson(json);
}
part 'item.freezed.dart';
part 'item.g.dart';

@freezed
abstract class Item with _$Item{
  const factory Item({String name, int amount}) = _Item;
  factory Item.fromJson(Map<String,dynamic> json) => _$ItemFromJson(json);
}

И запустите следующее

    var order = Order(items: [Item(name:' aSasaS')]);
    print(order.toJson().toString());
    final o = Order.fromJson(order.toJson());
    print('all done');

Получение следующего исключения:

type '_$_Item' is not a subtype of type 'Map<String, dynamic>' in type cast
When the exception was thrown, this was the stack:
#0      _$_$_OrderFromJson.<anonymous closure> 
package:test7/order.g.dart:13
#1      MappedListIterable.elementAt  (dart:_internal/iterable.dart:417:31)
#2      ListIterator.moveNext  (dart:_internal/iterable.dart:343:26)
#3      new List.from  (dart:core-patch/array_patch.dart:38:29)
#4      new List.of  (dart:core-patch/array_patch.dart:68:17)
#5      ListIterable.toList  (dart:_internal/iterable.dart:211:44)

Означает ли это, что мы не можем использовать коллекцию типа List внутри объекта @freezed?

...