mirror of
https://github.com/smmarty/friflex_flutter_starter.git
synced 2025-12-22 01:20:46 +00:00
refactor(app): Обновить описание и структуру файлов конфигурации, улучшить документацию (#14)
Co-authored-by: PetrovY <y.petrov@friflex.com>
This commit is contained in:
@@ -5,10 +5,16 @@ import 'package:friflex_starter/features/profile/domain/repository/i_profile_rep
|
||||
part 'profile_event.dart';
|
||||
part 'profile_state.dart';
|
||||
|
||||
/// {@template profile_bloc}
|
||||
/// Bloc для управления состоянием профиля пользователя.
|
||||
///
|
||||
/// Обрабатывает события загрузки данных профиля и управляет
|
||||
/// соответствующими состояниями (загрузка, успех, ошибка).
|
||||
/// {@endtemplate}
|
||||
class ProfileBloc extends Bloc<ProfileEvent, ProfileState> {
|
||||
/// {@macro profile_bloc}
|
||||
ProfileBloc(this._profileRepository) : super(ProfileInitialState()) {
|
||||
// Вам необходимо добавлять только
|
||||
// один обработчик событий в конструкторе
|
||||
// Регистрируем обработчики событий в конструкторе
|
||||
on<ProfileEvent>((event, emit) async {
|
||||
if (event is ProfileFetchProfileEvent) {
|
||||
await _fetchProfile(event, emit);
|
||||
@@ -16,8 +22,19 @@ class ProfileBloc extends Bloc<ProfileEvent, ProfileState> {
|
||||
});
|
||||
}
|
||||
|
||||
/// Репозиторий для работы с данными профиля
|
||||
final IProfileRepository _profileRepository;
|
||||
|
||||
/// Метод для загрузки данных профиля пользователя.
|
||||
///
|
||||
/// Принимает:
|
||||
/// - [event] - событие с ID пользователя для загрузки
|
||||
/// - [emit] - функция для эмиссии состояний
|
||||
///
|
||||
/// Последовательность состояний:
|
||||
/// 1. ProfileWaitingState - начало загрузки
|
||||
/// 2. ProfileSuccessState - успешная загрузка с данными
|
||||
/// 3. ProfileErrorState - ошибка загрузки с сообщением
|
||||
Future<void> _fetchProfile(
|
||||
ProfileFetchProfileEvent event,
|
||||
Emitter<ProfileState> emit,
|
||||
|
||||
@@ -3,17 +3,22 @@ import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
import 'package:friflex_starter/app/app_context_ext.dart';
|
||||
import 'package:friflex_starter/features/profile/domain/bloc/profile_bloc.dart';
|
||||
|
||||
// Класс экрана, где мы инициализируем ProfileBloc
|
||||
// и вызываем событие ProfileFetchProfileEvent
|
||||
/// {@template profile_screen}
|
||||
/// Экран профиля пользователя.
|
||||
///
|
||||
/// Отвечает за:
|
||||
/// - Инициализацию ProfileBloc с репозиторием профиля
|
||||
/// - Отображение данных профиля пользователя
|
||||
/// - Обработку состояний загрузки, успеха и ошибок
|
||||
/// {@endtemplate}
|
||||
class ProfileScreen extends StatelessWidget {
|
||||
/// {@macro profile_screen}
|
||||
const ProfileScreen({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final profileRepository = context.di.repositories.profileRepository;
|
||||
// Здесь мы инициализируем ProfileBloc
|
||||
// и вызываем событие ProfileFetchProfileEvent
|
||||
// Или любые другие события, которые вам нужны
|
||||
// Инициализируем ProfileBloc с репозиторием и загружаем данные профиля
|
||||
return BlocProvider(
|
||||
create: (context) =>
|
||||
ProfileBloc(profileRepository)
|
||||
@@ -23,8 +28,16 @@ class ProfileScreen extends StatelessWidget {
|
||||
}
|
||||
}
|
||||
|
||||
/// Виджет, который отображает UI экрана
|
||||
/// {@template profile_screen_view}
|
||||
/// Виджет для отображения UI экрана профиля.
|
||||
///
|
||||
/// Отображает данные профиля в зависимости от состояния ProfileBloc:
|
||||
/// - Индикатор загрузки во время получения данных
|
||||
/// - Данные профиля при успешной загрузке
|
||||
/// - Сообщение об ошибке при неудачной загрузке
|
||||
/// {@endtemplate}
|
||||
class _ProfileScreenView extends StatelessWidget {
|
||||
/// {@macro profile_screen_view}
|
||||
const _ProfileScreenView();
|
||||
|
||||
@override
|
||||
|
||||
Reference in New Issue
Block a user