Flutter – Create a Dart Model using Freezed Package
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
// 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
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.
Contact Us