binta_model_generator 0.1.1 copy "binta_model_generator: ^0.1.1" to clipboard
binta_model_generator: ^0.1.1 copied to clipboard

A Dart package which helps us to generate model class from json or response APIs

Easy Generate Model Class


Star on GitHub MIT License


Overview #

binta_model_generator is a library that functions as a generator for creating response models in the Dart language.

Developers can be easly generating models without open any tools.

Only config first, and run anything you wants.

Usage #

First, we need to do add binta_model_generator to the dependencies of the pubspec.yaml

for now binta_model_generator it's still comingsoon on pub.dev

dependencies:
  binta_model_generator: ^0.1.1

Next, we need to create new dart file and

if you have http services using Dio or any package you can use code below:

import 'package:binta_model_generator/binta_model_generator.dart';
import 'package:dio/dio.dart';

main() async {
  final response = await hitService();
  BintaModelGenerator.generateResponseModel(
    parentModelName: "YourParentClassNameOfModel",
    yourJson: response,
    outputFile: "example/",
  );
}

Future<dynamic> hitService() async {
  final Dio dio = Dio();
  try {
    final response = await dio.get("https://your_services.example/example");
    return response;
  } on DioException catch (e) {
    throw Exception(
      e.error,
    );
  }
}

we have example json/response APIs

{
  "status": 200,
  "data": {
    "person": [
      {
        "name": "binta",
        "age": 22
      },
      {
        "name": "reza",
        "age": 24
      }
    ],
    "info": {
      "code": "EXAMPLE_CODE_001",
      "message": "success to show data person"
    }
  }
}

don't forget to run your file dart

dart run your_dart_file.dart

and Finally we have files are generated on output file

   📦example/
 ┣ 📜data_model.dart
 ┣ 📜info_model.dart
 ┣ 📜person_model.dart
 ┗ 📜person_model_model.dart
//in example/person_model_model.dart
import 'package:equatable/equatable.dart';
import 'data_model.dart';


class PersonModelModel extends Equatable {
  final int? status;
  final DataModel? data;

  const PersonModelModel({
    this.status,
    this.data,
  });

  factory PersonModelModel.fromJson(Map<String, dynamic> json) =>
      PersonModelModel(
        status : json['status'],
        data: json['data'] != null ? DataModel.fromJson(json['data']) : null,
      );

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> json = <String, dynamic>{};
    json['status'] = status;
    if(json['data'] != null) {
      json['data'] = data!.toJson();
    }
    return json;
  }

  @override
  List<Object?> get props =>[
    status,
    data,
  ];
}
//in example/person_model.dart
class PersonModel extends Equatable {
  final String? name;
  final int? age;

  const PersonModel({
    this.name,
    this.age,
  });

  factory PersonModel.fromJson(Map<String, dynamic> json) =>
      PersonModel(
        name : json['name'],
        age : json['age'],
      );

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> json = <String, dynamic>{};
    json['name'] = name;
    json['age'] = age;
    return json;
  }

  @override
  List<Object?> get props =>[
    name,
    age,
  ];
}
//in example/data_model.dart
import 'package:equatable/equatable.dart';
import 'info_model.dart';
import 'person_model.dart';


class DataModel extends Equatable {
  final List<PersonModel>? person;
  final InfoModel? info;

  const DataModel({
    this.person,
    this.info,
  });

  factory DataModel.fromJson(Map<String, dynamic> json) =>
      DataModel(
        person: json['person'] != null ? List<PersonModel>.from(json['person']?.map((x) => PersonModel.fromJson(x),),) : [],
        info: json['info'] != null ? InfoModel.fromJson(json['info']) : null,
      );

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> json = <String, dynamic>{};
    if (person != null) {
      json['person'] = person!.map((v) => v.toJson()).toList();
    }
    if(json['info'] != null) {
      json['info'] = info!.toJson();
    }
    return json;
  }

  @override
  List<Object?> get props =>[
    person,
    info,
  ];
}
//in example/info_model.dart
import 'package:equatable/equatable.dart';

class InfoModel extends Equatable {
  final String? code;
  final String? message;

  const InfoModel({
    this.code,
    this.message,
  });

  factory InfoModel.fromJson(Map<String, dynamic> json) => InfoModel(
    code: json['code'],
    message: json['message'],
  );

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> json = <String, dynamic>{};
    json['code'] = code;
    json['message'] = message;
    return json;
  }

  @override
  List<Object?> get props => [
    code,
    message,
  ];
}

Creator #


Bijantyum

💻 📖 ⚠️

Reza Fahlevi

📖 💻
0
likes
140
points
35
downloads

Publisher

verified publisherpackage.bintaaa.com

Weekly Downloads

A Dart package which helps us to generate model class from json or response APIs

Repository (GitHub)
View/report issues

Documentation

Documentation
API reference

License

BSD-2-Clause (license)

More

Packages that depend on binta_model_generator