proxibuy/lib/presentation/notification_preferences/bloc/notification_preferences_bl...

41 lines
1.9 KiB
Dart

import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:proxibuy/core/gen/assets.gen.dart';
import 'package:proxibuy/domain/entities/category_entity.dart';
import 'notification_preferences_event.dart';
import 'notification_preferences_state.dart';
class NotificationPreferencesBloc
extends Bloc<NotificationPreferencesEvent, NotificationPreferencesState> {
NotificationPreferencesBloc() : super(const NotificationPreferencesState()) {
on<LoadCategories>(_onLoadCategories);
on<ToggleCategorySelection>(_onToggleCategorySelection);
}
void _onLoadCategories(
LoadCategories event, Emitter<NotificationPreferencesState> emit) {
final categories = [
CategoryEntity(id: 1, name: 'تریا', icon: Assets.icons.teria),
CategoryEntity(id: 2, name: 'پوشاک', icon: Assets.icons.pooshak),
CategoryEntity(id: 3, name: 'فست‌فود', icon: Assets.icons.fastfood),
CategoryEntity(id: 4, name: 'کافی‌شاپ', icon: Assets.icons.coffeeshop),
CategoryEntity(id: 5, name: 'رستوران', icon: Assets.icons.resturan),
CategoryEntity(id: 6, name: 'لوازم دیجیتال', icon: Assets.icons.digital),
CategoryEntity(id: 7, name: 'کیف‌وکفش', icon: Assets.icons.kafsh),
CategoryEntity(id: 8, name: 'سینما', icon: Assets.icons.cinama),
CategoryEntity(id: 9, name: 'لوازم آرایشی', icon: Assets.icons.arayesh),
CategoryEntity(id: 10, name: 'طلا و زیورآلات', icon: Assets.icons.tala),
];
emit(state.copyWith(categories: categories));
}
void _onToggleCategorySelection(ToggleCategorySelection event,
Emitter<NotificationPreferencesState> emit) {
final selectedIds = Set<int>.from(state.selectedCategoryIds);
if (selectedIds.contains(event.categoryId)) {
selectedIds.remove(event.categoryId);
} else {
selectedIds.add(event.categoryId);
}
emit(state.copyWith(selectedCategoryIds: selectedIds));
}
}