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 vebuild_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
vetoString()
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
}
Bu Yazıya Tepkin Ne Oldu ?
YORUMLAR