lab6 #5
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…
x
Reference in New Issue
Block a user