/// نتیجه‌ی یک عملیات داده‌ای: موفق (داده) یا خطا (پیام). /// لایه‌ی data همیشه DataState برمی‌گرداند تا لایه‌های بالا throw نگیرند. abstract class DataState { final T? data; final String? error; const DataState(this.data, this.error); } class DataSuccess extends DataState { const DataSuccess(T data) : super(data, null); } class DataError extends DataState { const DataError(String error) : super(null, error); }