Open In App

Flutter – Create a Dart Model using Freezed Package

Last Updated : 09 Jan, 2024
Improve
Improve
Like Article
Like
Save
Share
Report

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

  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.

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 commandfile

After running this command 2 more files will be created i.e post_model.freezed.dart,post_model.g.dart.

file

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.



Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads