laba_6 update
This commit is contained in:
parent
149cef9b2b
commit
1efc0ab6f1
@ -5,11 +5,9 @@ part 'players_dto.g.dart';
|
||||
@JsonSerializable(createToJson: false)
|
||||
class PlayersDto {
|
||||
final List<PlayerDataDto>? items;
|
||||
final PaginationDto? pagination;
|
||||
|
||||
const PlayersDto({
|
||||
this.items,
|
||||
this.pagination,
|
||||
});
|
||||
|
||||
factory PlayersDto.fromJson(Map<String, dynamic> json) => _$PlayersDtoFromJson(json);
|
||||
@ -63,12 +61,3 @@ class PlayerPositionDataDto {
|
||||
|
||||
factory PlayerPositionDataDto.fromJson(Map<String, dynamic> json) => _$PlayerPositionDataDtoFromJson(json);
|
||||
}
|
||||
|
||||
@JsonSerializable(createToJson: false)
|
||||
class PaginationDto {
|
||||
final int? offset;
|
||||
|
||||
const PaginationDto({this.offset});
|
||||
|
||||
factory PaginationDto.fromJson(Map<String, dynamic> json) => _$PaginationDtoFromJson(json);
|
||||
}
|
@ -10,9 +10,6 @@ PlayersDto _$PlayersDtoFromJson(Map<String, dynamic> json) => PlayersDto(
|
||||
items: (json['items'] as List<dynamic>?)
|
||||
?.map((e) => PlayerDataDto.fromJson(e as Map<String, dynamic>))
|
||||
.toList(),
|
||||
pagination: json['pagination'] == null
|
||||
? null
|
||||
: PaginationDto.fromJson(json['pagination'] as Map<String, dynamic>),
|
||||
);
|
||||
|
||||
PlayerDataDto _$PlayerDataDtoFromJson(Map<String, dynamic> json) =>
|
||||
@ -57,8 +54,3 @@ PlayerPositionDataDto _$PlayerPositionDataDtoFromJson(
|
||||
PlayerPositionDataDto(
|
||||
json['label'] as String?,
|
||||
);
|
||||
|
||||
PaginationDto _$PaginationDtoFromJson(Map<String, dynamic> json) =>
|
||||
PaginationDto(
|
||||
offset: (json['offset'] as num?)?.toInt(),
|
||||
);
|
||||
|
@ -13,6 +13,5 @@ extension PlayerDataDtoToModel on PlayerDataDto {
|
||||
extension PlayersDtoToModel on PlayersDto {
|
||||
HomeData toDomain() => HomeData(
|
||||
data: items?.map((e) => e.toDomain()).toList(),
|
||||
nextPage: pagination?.offset! + 1,
|
||||
);
|
||||
}
|
@ -5,27 +5,32 @@ import 'package:untitled/presentation/home_page/bloc/state.dart';
|
||||
|
||||
class HomeBloc extends Bloc<HomeEvent, HomeState> {
|
||||
final PlayerRepository repo;
|
||||
int off = 0;
|
||||
|
||||
HomeBloc(this.repo) : super(const HomeState()) {
|
||||
on<HomeLoadDataEvent>(_onLoadData);
|
||||
}
|
||||
|
||||
void _onLoadData(HomeLoadDataEvent event, Emitter<HomeState> emit) async {
|
||||
if (event.offset == null) {
|
||||
if (event.obnova == null) {
|
||||
emit(state.copyWith(isLoading: true));
|
||||
} else {
|
||||
emit(state.copyWith(isPaginationLoading: true));
|
||||
}
|
||||
|
||||
if (event.obnova == 0) {
|
||||
off = 0;
|
||||
}
|
||||
|
||||
String? error;
|
||||
|
||||
final data = await repo.loadData(
|
||||
q: event.search,
|
||||
offset: event.offset ?? 0,
|
||||
offset: off,
|
||||
onError: (e) => error = e,
|
||||
);
|
||||
|
||||
if (event.offset != null) {
|
||||
if (event.obnova != 0) {
|
||||
data?.data?.insertAll(0, state.data?.data ?? []);
|
||||
}
|
||||
|
||||
@ -35,5 +40,6 @@ class HomeBloc extends Bloc<HomeEvent, HomeState> {
|
||||
data: data,
|
||||
error: error,
|
||||
));
|
||||
off += 10;
|
||||
}
|
||||
}
|
@ -4,7 +4,7 @@ abstract class HomeEvent {
|
||||
|
||||
class HomeLoadDataEvent extends HomeEvent {
|
||||
final String? search;
|
||||
final int? offset;
|
||||
final int? obnova;
|
||||
|
||||
const HomeLoadDataEvent({this.search, this.offset});
|
||||
const HomeLoadDataEvent({this.search, this.obnova});
|
||||
}
|
@ -74,12 +74,12 @@ class _WidgetBodyState extends State<WidgetBody> {
|
||||
}
|
||||
|
||||
void _onNextPageListener() {
|
||||
if(scrollController.offset > scrollController.position.maxScrollExtent) {
|
||||
if(scrollController.offset >= scrollController.position.maxScrollExtent) {
|
||||
final bloc = context.read<HomeBloc>();
|
||||
if (!bloc.state.isPaginationLoading) {
|
||||
bloc.add(HomeLoadDataEvent(
|
||||
search: searchController.text,
|
||||
offset: bloc.state.data?.nextPage,
|
||||
obnova: 1,
|
||||
));
|
||||
}
|
||||
}
|
||||
@ -168,7 +168,7 @@ class _WidgetBodyState extends State<WidgetBody> {
|
||||
Future<void> _onRefresh() {
|
||||
context
|
||||
.read<HomeBloc>()
|
||||
.add(HomeLoadDataEvent(search: searchController.text));
|
||||
.add(HomeLoadDataEvent(search: searchController.text, obnova: 0));
|
||||
return Future.value(null);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user