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/database/database.dart'; import 'package:remever/inject.dart'; part 'collection_state.dart'; part 'collection_cubit.freezed.dart'; class CollectionCubit extends Cubit { CollectionCubit() : super(CollectionState.data()); /// Нотифаер домашнего экрана CollectionData get _cd => getIt(); /// Контроллер скролла для коллекции 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 close() { collectionController.dispose(); return super.close(); } Future toLoadingState() async { emit(CollectionState.loading()); } Future toDataState() async { emit(CollectionState.data()); } Future toEmptyState() async { emit(CollectionState.empty()); } Future toErrorState() async { emit(CollectionState.error()); } }