Open In App

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




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

  1. freezed_annotation: This package is used to give a sample file access freezed keyword to create new model file
  2. json_annotation: This create code for JSON serialization and deserialization.
  3. build_runner: This package provides a concrete way of generating files using Dart code.
  4. freezed: This create model class and functions
  5. 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.


Article Tags :