64 lines
2.6 KiB
Dart
64 lines
2.6 KiB
Dart
import 'package:flutter_bloc/flutter_bloc.dart';
|
|
import 'package:news/data/models/CategoryModel.dart';
|
|
import 'package:news/data/models/TagModel.dart';
|
|
import 'package:news/data/models/appLanguageModel.dart';
|
|
import 'package:news/data/models/locationCityModel.dart';
|
|
|
|
abstract class BottomSheetEvent {}
|
|
|
|
class UpdateBottomSheetContent extends BottomSheetEvent {
|
|
final List<LocationCityModel> newData;
|
|
final List<TagModel> newTagsData;
|
|
final List<TagModel> newLanguagesData;
|
|
|
|
UpdateBottomSheetContent(this.newData, this.newTagsData, this.newLanguagesData);
|
|
}
|
|
|
|
// Define the state for your bottom sheet Cubit
|
|
class BottomSheetState {
|
|
final List<LocationCityModel> locationData;
|
|
final List<TagModel> tagsData;
|
|
final List<LanguageModel> languageData;
|
|
final List<CategoryModel> categoryData;
|
|
|
|
BottomSheetState(this.locationData, this.tagsData, this.languageData, this.categoryData);
|
|
}
|
|
|
|
// Define the Cubit itself
|
|
class BottomSheetCubit extends Cubit<BottomSheetState> {
|
|
BottomSheetCubit() : super(BottomSheetState([], [], [], []));
|
|
// Access the data field within the cubit
|
|
|
|
List<LocationCityModel> currentLocationData = [];
|
|
List<TagModel> currentTagData = [];
|
|
List<LanguageModel> currentLanguageData = [];
|
|
List<CategoryModel> currentCategoryData = [];
|
|
|
|
getAllLatestContent({required bool isTag, required bool isLocation, required bool isLanguage, required bool isCategory}) {
|
|
if (!isLocation) currentLocationData = state.locationData;
|
|
if (!isTag) currentTagData = state.tagsData;
|
|
if (!isLanguage) currentLanguageData = state.languageData;
|
|
if (!isCategory) currentCategoryData = state.categoryData;
|
|
}
|
|
|
|
void updateLocationContent(List<LocationCityModel> newData) {
|
|
getAllLatestContent(isTag: false, isLocation: true, isLanguage: false, isCategory: false);
|
|
emit(BottomSheetState(newData, currentTagData, currentLanguageData, currentCategoryData));
|
|
}
|
|
|
|
void updateTagsContent(List<TagModel> newTagsData) {
|
|
getAllLatestContent(isTag: true, isLocation: false, isLanguage: false, isCategory: false);
|
|
emit(BottomSheetState(currentLocationData, newTagsData, currentLanguageData, currentCategoryData));
|
|
}
|
|
|
|
void updateLanguageContent(List<LanguageModel> newLanguagesData) {
|
|
getAllLatestContent(isTag: false, isLocation: false, isLanguage: true, isCategory: false);
|
|
emit(BottomSheetState(currentLocationData, currentTagData, newLanguagesData, currentCategoryData));
|
|
}
|
|
|
|
void updateCategoryContent(List<CategoryModel> newCategoryData) {
|
|
getAllLatestContent(isTag: false, isLocation: false, isLanguage: false, isCategory: true);
|
|
emit(BottomSheetState(currentLocationData, currentTagData, currentLanguageData, newCategoryData));
|
|
}
|
|
}
|