Добавил классы bloc для home page

This commit is contained in:
Никита Потапов 2024-12-13 03:41:33 +04:00
parent 906a889c04
commit 1d5332db3c
3 changed files with 49 additions and 0 deletions

View File

@ -0,0 +1,25 @@
import 'dart:async';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:pmu/data/repositories/api_user_repository.dart';
import 'package:pmu/presentation/home_page/bloc/events.dart';
import 'package:pmu/presentation/home_page/bloc/state.dart';
class HomeBlock extends Bloc<HomeEvent, HomeState> {
final ApiUserRepository repository;
HomeBlock(this.repository) : super(const HomeState()) {
on<HomeLoadDataEvent>(_onLoadData);
}
Future<void> _onLoadData(
HomeLoadDataEvent event, Emitter<HomeState> emit) async {
emit(state.copyWith(isLoading: true));
final data = await repository.loadData(q: event.search);
emit(state.copyWith(
isLoading: false,
data: data,
));
}
}

View File

@ -0,0 +1,9 @@
abstract class HomeEvent {
const HomeEvent();
}
class HomeLoadDataEvent extends HomeEvent {
final String? search;
const HomeLoadDataEvent({this.search});
}

View File

@ -0,0 +1,15 @@
import 'package:equatable/equatable.dart';
import 'package:pmu/domain/card.dart';
class HomeState extends Equatable {
final List<CardPostData>? data;
final bool isLoading;
const HomeState({this.data, this.isLoading = false});
HomeState copyWith({List<CardPostData>? data, bool? isLoading}) => HomeState(
data: data ?? this.data, isLoading: isLoading ?? this.isLoading);
@override
List<Object?> get props => [data, isLoading];
}