In this article, we will learn how to create a dart model automatically with a sample of code using the freezed package. If you are making a large-scale app. You cannot write a model class file for every data you receive from the backend. So here’s a simple solution for it where this model will automatically generate you just need to add sample data in some format.
Step By Step Implementation
Step 1: Create a New Project in Android Studio
To set up Flutter Development on Android Studio please refer to Android Studio Setup for Flutter Development, and then create a new project in Android Studio please refer to Creating a Simple Application in Flutter.
Step 2: Add the following packages
Add the following dev dependency in your project
dev_dependencies: flutter_test:
sdk: flutter
flutter_lints: ^2.0.0
build_runner: ^2.4.7
freezed: ^2.4.6
json_serializable: ^6.7.1
|
Add the follwing dependency in your pubspec.yaml file
dependencies: flutter:
sdk: flutter
freezed_annotation: ^2.4.1
json_annotation: ^4.8.1
|
Let’s understand what this package will use for
- freezed_annotation: This package is used to give a sample file access freezed keyword to create new model file
- json_annotation: This create code for JSON serialization and deserialization.
- build_runner: This package provides a concrete way of generating files using Dart code.
- freezed: This create model class and functions
- json_serializable: To generate to/from JSON code for a class, annotate it with JsonSerializable
Step 3: Create a model folder and create a user model file in it and add sample data in it
We are using this sample json data for which we will create a model
{
"userId": 1,
"id": 3,
"title": "ea molestias quasi exercitationem repellat qui ipsa sit aut",
"body": "et iusto sed quo iure\nvoluptatem occaecati omnis eligendi aut ad\nvoluptatem doloribus vel accusantium quis pariatur\nmolestiae porro eius odio et labore et velit aut"
}
Sample Code for creating freezed model in models/postmodels/postmodel.dart.
// ignore_for_file: non_constant_identifier_names import 'package:freezed_annotation/freezed_annotation.dart' ;
// name will be same as your current file // name like we have given postmodel.dart part 'postmodel.freezed.dart' ;
part 'postmodel.g.dart' ;
// This is used to create a freezed model @freezed class PostModel with _$PostModel {
const factory PostModel({
// Sample key from json to show how
// we recieve the data from backend
required int id,
required int userId,
required String title,
required String body,
}) = _PostModel;
factory PostModel.fromJson(Map<String, dynamic> json) =>
_$PostModelFromJson(json);
} |
Step 4: Run command to create automatic freezed model class in the model
In terminal run this command to create a model class
flutter pub run build_runner build -- delete -conflicting-outputs
|
Before running this command
After running this command 2 more files will be created i.e post_model.freezed.dart,post_model.g.dart.
This file contains many function like copyWith, toJson, from Json, toString, hashcode and many more. This will help you to access the model data easily.