Skip to content

An auto mapper for Dart. It allows mapping objects of different classes automatically and manually using JSON serialization.

License

Notifications You must be signed in to change notification settings

leynier/automap-dart

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AutoMapper for Dart

style: lint

An auto mapper for Dart. It allows mapping objects of different classes automatically and manually using JSON serialization.

Example

import 'package:automap/automap.dart';

class AutoSource implements AutoMapperModel {
  final int x;

  AutoSource(this.x);

  @override
  Map<String, dynamic> toAutoJson() => {'x': x};
}

class AutoTarget {
  final int x;

  AutoTarget(this.x);

  static AutoTarget fromAutoJson(Map<String, dynamic> json) =>
      AutoTarget(json['x'] as int);
}

class ManualSource {
  final int x;

  ManualSource(this.x);
}

class ManualTarget {
  final int x;

  ManualTarget(this.x);
}

void main() {
  AutoMapper.I
    ..addMap<AutoSource, AutoTarget>(
      AutoTarget.fromAutoJson,
    )
    ..addManualMap<AutoTarget, AutoSource>(
      (source, mapper, params) => AutoSource(source.x),
    )
    ..addManualMap<ManualSource, ManualTarget>(
      (source, mapper, params) => ManualTarget(source.x),
    );
  final autoSource = AutoSource(5);
  final manualSource = ManualSource(5);
  final autoTarget = AutoMapper.I.map<AutoSource, AutoTarget>(
    autoSource,
  );
  final secondAutoSource = AutoMapper.I.map<AutoTarget, AutoSource>(
    autoTarget,
  );
  final manualTarget = AutoMapper.I.map<ManualSource, ManualTarget>(
    manualSource,
  );
  // ignore: avoid_print
  print('${autoTarget.x}, ${secondAutoSource.x}, ${manualTarget.x}');
}

About

An auto mapper for Dart. It allows mapping objects of different classes automatically and manually using JSON serialization.

Topics

Resources

License

Stars

Watchers

Forks

Languages