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