freezed_annotation, Dart projelerinde immutable (değişmez) sınıflar, eşitlik karşılaştırması, veri sınıfları (data classes) ve sealed sınıflar oluşturmayı kolaylaştıran bir Freezed kütüphanesinin parçasıdır. freezed_annotation, Freezed kütüphanesinin temel anotasyonlarını sağlar ve bu anotasyonlar, kod üretimini yönlendirmek için kullanılır.

Freezed ve Freezed Annotation Arasındaki Bağlantı

  • freezed_annotation: Sadece anotasyonları içerir. Bu, bağımlılıklarınızda yalnızca hafif bir ekleme yapar. Bu paketi, asıl uygulamanızda (örneğin, Flutter uygulamanızda) kullanırsınız.
  • Freezed: Kod üretimini yapan ana kütüphanedir. Bu paketi dev_dependencies olarak eklemeniz ve build_runner ile birlikte kullanmanız gerekir.

Neden freezed_annotation Kullanılır?

  • Immutable (Değişmez) Sınıflar: Oluşturulan sınıflar değiştirilemez, yani bir nesne oluşturduktan sonra değerlerini değiştiremezsiniz. Bu, hata ayıklamayı kolaylaştırır.
  • Eşitlik Karşılaştırması: Freezed sınıfları otomatik olarak “değer tabanlı” eşitlik karşılaştırmasını destekler. Örneğin, aynı verilere sahip iki nesne birbirine eşit kabul edilir.
  • Kod Yazımını Azaltır: Getters, eşitlik kontrolleri (==), hashCode ve toString() gibi şeyleri elle yazmak yerine, Freezed sizin için bunları üretir.
  • JSON Desteği: Freezed, json_serializable ile entegre çalışır ve JSON dönüşümlerini kolaylaştırır.
  • Union Types / Sealed Classes: Dart’ta union ve sealed class gibi davranan yapılar oluşturabilirsiniz. Bu, genellikle hata durumlarını veya durum yönetimlerini modellemek için kullanılır.

import ‘package:freezed_annotation/freezed_annotation.dart’;

part ‘user.freezed.dart’;
part ‘user.g.dart’;

@freezed
class User with _$User {
const factory User({
required String id,
required String name,
required int age,
}) = _User;

// JSON desteği için
factory User.fromJson(Map json) => _$UserFromJson(json);
}

YORUMLAR

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir