قراردادهای نامگذاری
قراردادهای نامگذاری زیر صرفاً توصیه شده و کاملاً اختیاری هستند. با خیال راحت از هر گونه قرارداد نامگذاری که ترجیح می دهید استفاده کنید. ممکن است دریابید که برخی از مثالها/اسناد اصولاً به دلیل سادگی/مختصر بودن از قراردادهای نامگذاری پیروی نمیکنند. این قرارداد ها به شدت برای پروژه های بزرگ با توسعه دهندگان متعدد توصیه می شود.
قراردادهای کلاس رویداد
Section titled “قراردادهای کلاس رویداد”رویدادها باید با گذشته ساده نامگذاری شوند، زیرا رویدادها چیزهایی هستند که از دیدگاه Bloc قبلاً اتفاق افتاده اند.
ساختار
Section titled “ساختار”BlocSubject
+ Noun (optional)
+ Verb (event)
رویدادهای لود اولیه باید این قرارداد را دنبال کنند: BlocSubject
+ Started
مثال ها
Section titled “مثال ها”✅ خوب
sealed class CounterEvent {}final class CounterStarted extends CounterEvent {}final class CounterIncrementPressed extends CounterEvent {}final class CounterDecrementPressed extends CounterEvent {}final class CounterIncrementRetried extends CounterEvent {}
❌ بد
sealed class CounterEvent {}final class Initial extends CounterEvent {}final class CounterInitialized extends CounterEvent {}final class Increment extends CounterEvent {}final class DoIncrement extends CounterEvent {}final class IncrementCounter extends CounterEvent {}
قراردادهای کلاس وضعیت
Section titled “قراردادهای کلاس وضعیت”وضعیتها باید اسم باشند، چرا که یک وضعیت فقط یک لحظهی خاص در زمان را نمایان میکند. دو روش رایج برای نمایش وضعیت وجود دارد: استفاده از زیرکلاسها (Subclasses) یا استفاده از یک کلاس تکی (Single class).
ساختار
Section titled “ساختار”زیرکلاسها
Section titled “زیرکلاسها”BlocSubject
+ Verb (action)
+ State
هنگام نمایش وضعیت به عنوان چندین زیرکلاس، State
باید یکی از موارد زیر را دارا
باشد:
Initial
| Success
| Failure
| InProgress
کلاس تکی
Section titled “کلاس تکی”BlocSubject
+ State
هنگام نمایش وضعیت به عنوان یک کلاس پایه تکی، باید از یک enum با نام
BlocSubject
+ Status
برای نمایش وضعیتهای مختلف استفاده شود:
initial
| success
| failure
| loading
.
مثال ها
Section titled “مثال ها”✅ خوب
زیرکلاسها
Section titled “زیرکلاسها”sealed class CounterState {}final class CounterInitial extends CounterState {}final class CounterLoadInProgress extends CounterState {}final class CounterLoadSuccess extends CounterState {}final class CounterLoadFailure extends CounterState {}
کلاس تکی
Section titled “کلاس تکی”enum CounterStatus { initial, loading, success, failure }final class CounterState { const CounterState({this.status = CounterStatus.initial}); final CounterStatus status;}
❌ بد
sealed class CounterState {}final class Initial extends CounterState {}final class Loading extends CounterState {}final class Success extends CounterState {}final class Succeeded extends CounterState {}final class Loaded extends CounterState {}final class Failure extends CounterState {}final class Failed extends CounterState {}