first commit
This commit is contained in:
61
lib/screens/collections/cubit/collection_cubit.dart
Normal file
61
lib/screens/collections/cubit/collection_cubit.dart
Normal file
@@ -0,0 +1,61 @@
|
||||
import 'package:bloc/bloc.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:freezed_annotation/freezed_annotation.dart';
|
||||
import 'package:remever/components/notifiers/home_screen_data.dart';
|
||||
import 'package:remever/inject.dart';
|
||||
|
||||
part 'collection_state.dart';
|
||||
part 'collection_cubit.freezed.dart';
|
||||
|
||||
class CollectionCubit extends Cubit<CollectionState> {
|
||||
CollectionCubit() : super(CollectionState.loading());
|
||||
|
||||
/// Нотифаер домашнего экрана
|
||||
CollectionData get _cd => getIt<CollectionData>();
|
||||
|
||||
/// Контроллер скролла для коллекции
|
||||
final ScrollController collectionController = ScrollController();
|
||||
|
||||
/// Позиция скролле
|
||||
double _previousScrollOffset = 0.0;
|
||||
|
||||
/// Индекс выбранной фильтрации коллекции
|
||||
int collectionFiltersIndex = 0;
|
||||
|
||||
void initScrollListener() {
|
||||
collectionController.addListener(() {
|
||||
final double currentScrollOffset = collectionController.offset;
|
||||
final bool isScrollingDown = currentScrollOffset > _previousScrollOffset;
|
||||
|
||||
if (isScrollingDown) {
|
||||
_cd.showFab(false);
|
||||
} else {
|
||||
_cd.showFab(true);
|
||||
}
|
||||
|
||||
_previousScrollOffset = currentScrollOffset;
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> close() {
|
||||
collectionController.dispose();
|
||||
return super.close();
|
||||
}
|
||||
|
||||
Future<void> toLoadingState() async {
|
||||
emit(CollectionState.loading());
|
||||
}
|
||||
|
||||
Future<void> toDataState() async {
|
||||
emit(CollectionState.data());
|
||||
}
|
||||
|
||||
Future<void> toEmptyState() async {
|
||||
emit(CollectionState.empty());
|
||||
}
|
||||
|
||||
Future<void> toErrorState() async {
|
||||
emit(CollectionState.error());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user