import 'dart:developer'; import 'package:flutter_bloc/flutter_bloc.dart'; /// Базовый класс для всех Cubit'ов с унифицированной обработкой ошибок abstract class BaseCubit extends Cubit { BaseCubit(super.initialState); /// Унифицированная обработка ошибок void handleError(Object error, [StackTrace? stackTrace]) { log('Error in $runtimeType: $error', stackTrace: stackTrace); // Здесь можно добавить отправку ошибок в Sentry или другую систему мониторинга } /// Безопасное выполнение асинхронных операций Future safeExecute(Future Function() operation) async { try { return await operation(); } catch (error, stackTrace) { handleError(error, stackTrace); return null; } } /// Безопасное выполнение асинхронных операций с обработкой состояния Future safeExecuteWithState( Future Function() operation, { required State loadingState, required State Function(T result) successState, required State Function(Object error) errorState, }) async { try { emit(loadingState); final result = await operation(); emit(successState(result)); return result; } catch (error, stackTrace) { handleError(error, stackTrace); emit(errorState(error)); return null; } } }