built_value_built_list_json_sample

Stars
1

built_value_built_list_json_sample

built_value sample: parse JSON to BuiltList dynamically.

Author: Petrus Nguyễn Thái Học

Use

Step 1. Define your Built classes in _types

/// Register your [Built] classes here.
const List<Type> _types = [
  MyModel,
  MyModelTwo,
];

Step 2. Define your BuilderFactorys in _factories.

/// Register your [_BuilderFactory]s here.
final List<_BuilderFactory> _factories = [
  _BuilderFactory(
    FullType(BuiltMap, [
      FullType(String),
      FullType(int),
    ]),
    () => MapBuilder<String, int>(),
  ),
];

Step 3. Use deserializeBuiltList and deserializeBuiltListNullable to parse JSON to BuiltList.

abstract class MyModel implements Built<MyModel, MyModelBuilder> {
  BuiltList<int?> get items;

  MyModel._();

  factory MyModel([void Function(MyModelBuilder) updates]) = _$MyModel;

  [...]
}

BuiltList<T> deserializeBuiltList<T extends Object>(Object json)

final json = [
  {
    'items': <int?>[1, 2, null, 3, 3]
  },
  {
    'items': <int?>[1, 2, null, 3, 2]
  },
  {
    'items': <int?>[1, 2, null, 3]
  },
];

BuiltList<MyModel> items = deserializeBuiltList<MyModel>(json);

BuiltList<T?> deserializeBuiltListNullable<T extends Object>(Object json).

final json = [
  {
    'items': <int?>[1, 2, null, 3, 3]
  },
  {
    'items': <int?>[1, 2, null, 3, 2]
  },
  null,
  {
    'items': <int?>[1, 2, null, 3]
  },
];

BuiltList<MyModel?> items = deserializeBuiltListNullable<MyModel>(json);

Run demo

dart pub get
dart run ./bin/main.dart