رفتن به محتوا

قراردادهای نامگذاری

قراردادهای نامگذاری زیر صرفاً توصیه شده و کاملاً اختیاری هستند. با خیال راحت از هر گونه قرارداد نامگذاری که ترجیح می دهید استفاده کنید. ممکن است دریابید که برخی از مثال‌ها/اسناد اصولاً به دلیل سادگی/مختصر بودن از قراردادهای نام‌گذاری پیروی نمی‌کنند. این قرارداد ها به شدت برای پروژه های بزرگ با توسعه دهندگان متعدد توصیه می شود.

قراردادهای کلاس رویداد

رویدادها باید با گذشته ساده نامگذاری شوند، زیرا رویدادها چیزهایی هستند که از دیدگاه Bloc قبلاً اتفاق افتاده اند.

ساختار

BlocSubject + Noun (optional) + Verb (event)

رویدادهای لود اولیه باید این قرارداد را دنبال کنند: BlocSubject + Started

مثال ها

خوب

counter_event.dart
sealed class CounterEvent {}
final class CounterStarted extends CounterEvent {}
final class CounterIncrementPressed extends CounterEvent {}
final class CounterDecrementPressed extends CounterEvent {}
final class CounterIncrementRetried extends CounterEvent {}

بد

counter_event.dart
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 {}

قراردادهای کلاس وضعیت

وضعیت‌ها باید اسم باشند، چرا که یک وضعیت فقط یک لحظه‌ی خاص در زمان را نمایان می‌کند. دو روش رایج برای نمایش وضعیت وجود دارد: استفاده از زیرکلاس‌ها (Subclasses) یا استفاده از یک کلاس تکی (Single class).

ساختار

زیرکلاس‌ها

BlocSubject + Verb (action) + State

هنگام نمایش وضعیت به عنوان چندین زیرکلاس، State باید یکی از موارد زیر را دارا باشد:

Initial | Success | Failure | InProgress

کلاس تکی

BlocSubject + State

هنگام نمایش وضعیت به عنوان یک کلاس پایه تکی، باید از یک enum با نام BlocSubject + Status برای نمایش وضعیت‌های مختلف استفاده شود:

initial | success | failure | loading.

مثال ها

خوب

زیرکلاس‌ها
counter_state.dart
sealed class CounterState {}
final class CounterInitial extends CounterState {}
final class CounterLoadInProgress extends CounterState {}
final class CounterLoadSuccess extends CounterState {}
final class CounterLoadFailure extends CounterState {}
کلاس تکی
counter_state.dart
enum CounterStatus { initial, loading, success, failure }
final class CounterState {
const CounterState({this.status = CounterStatus.initial});
final CounterStatus status;
}

بد

counter_state.dart
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 {}