Flutter – Create a Dart Model using Freezed Package
Last Updated :
09 Jan, 2024
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
Dart
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
Dart
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.
Dart
import 'package:freezed_annotation/freezed_annotation.dart' ;
part 'postmodel.freezed.dart' ;
part 'postmodel.g.dart' ;
@freezed
class PostModel with _$PostModel {
const factory PostModel({
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
Dart
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.
Share your thoughts in the comments
Please Login to comment...