Flutter默认不允许反射。可以利用基于reflectable反射以及调用。
- 引入类库
 
1 2
   | dependencies:   reflectable: ^3.0.10
   | 
- 反射帮助类
 
1 2 3 4 5 6 7 8 9
   | import 'package:reflectable/reflectable.dart'; class Reflector extends Reflectable {   const Reflector()       : super(       invokingCapability,       declarationsCapability,       typeRelationsCapability,       libraryCapability);  }
   | 
- 反射注解类
 
1 2 3 4 5 6 7 8 9 10 11 12 13
   | import 'package:odindio/reflector.dart'; import 'package:reflectable/mirrors.dart'; const odinReflectable = Reflector(); class OdinReflect {   static T reflectInstanceFromMap<T>(Map<String, dynamic> map,       {methodName = "fromJson"}) {          ClassMirror classMirror = odinReflectable.reflectType(T) as ClassMirror;          var instance = classMirror.newInstance(methodName, [map]) as T;     return instance;   } }
   | 
- model类
 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
   | import 'package:json_annotation/json_annotation.dart'; import 'package:odindio/odin_reflect.dart'; part 'post_model.g.dart';
  @odinReflectable @JsonSerializable() class PostModel {   final int? code;   final String? message;   final List<Data>? data;
    PostModel({     this.code,     this.message,     this.data,   });
    factory PostModel.fromJson(Map<String, dynamic> json) =>       _$PostModelFromJson(json);
    @override   Map<String, dynamic> toJson() => _$PostModelToJson(this);
    @override   fromJson(Map<String, dynamic> json) {          throw UnimplementedError();   } }
  @JsonSerializable() class Data {   final int? id;   final String? stuName;   final int? age;
    Data({     this.id,     this.stuName,     this.age,   });
    factory Data.fromJson(Map<String, dynamic> json) =>       _$DataFromJson(json);
    Map<String, dynamic> toJson() => _$DataToJson(this); }
   | 
- 具体使用:
 
1 2 3 4
   | import 'odindio_test.reflectable.dart'; void main(){   initializeReflectable(); }
   | 
1 2 3 4
   | T dioResultToModel<T>(dynamic data){   var value = OdinReflect.reflectInstanceFromMap<T>(data);   return value; }
  | 
终端执行 生成反射辅助类1
   | flutter pub run build_runner clean && flutter pub run build_runner build --delete-conflicting-outputs 
   |