Добавил классы bloc для home page
This commit is contained in:
parent
906a889c04
commit
1d5332db3c
25
lib/presentation/home_page/bloc/bloc.dart
Normal file
25
lib/presentation/home_page/bloc/bloc.dart
Normal 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,
|
||||
));
|
||||
}
|
||||
}
|
9
lib/presentation/home_page/bloc/events.dart
Normal file
9
lib/presentation/home_page/bloc/events.dart
Normal file
@ -0,0 +1,9 @@
|
||||
abstract class HomeEvent {
|
||||
const HomeEvent();
|
||||
}
|
||||
|
||||
class HomeLoadDataEvent extends HomeEvent {
|
||||
final String? search;
|
||||
|
||||
const HomeLoadDataEvent({this.search});
|
||||
}
|
15
lib/presentation/home_page/bloc/state.dart
Normal file
15
lib/presentation/home_page/bloc/state.dart
Normal 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];
|
||||
}
|
Loading…
Reference in New Issue
Block a user