39 lines
1.1 KiB
Dart
39 lines
1.1 KiB
Dart
import 'package:flutter_bloc/flutter_bloc.dart';
|
|
import 'package:shared_preferences/shared_preferences.dart';
|
|
|
|
import 'know_event.dart';
|
|
import 'know_state.dart';
|
|
|
|
const String _knownPrefsKey = 'known';
|
|
|
|
class KnowBloc extends Bloc<KnowEvent, KnowState> {
|
|
KnowBloc() : super(const KnowState(knownIds: [])) {
|
|
on<ChangeKnowEvent>(_onChangeKnow);
|
|
on<LoadKnowsEvent>(_onLoadKnows);
|
|
}
|
|
|
|
Future<void> _onLoadKnows(
|
|
LoadKnowsEvent event, Emitter<KnowState> emit) async {
|
|
final prefs = await SharedPreferences.getInstance();
|
|
final data = prefs.getStringList(_knownPrefsKey);
|
|
|
|
emit(state.copyWith(knownIds: data));
|
|
}
|
|
|
|
Future<void> _onChangeKnow(
|
|
ChangeKnowEvent event, Emitter<KnowState> emit) async {
|
|
final updatedList = List<String>.from(state.knownIds ?? []);
|
|
|
|
if (updatedList.contains(event.id)) {
|
|
updatedList.remove(event.id);
|
|
} else {
|
|
updatedList.add(event.id);
|
|
}
|
|
|
|
final prefs = await SharedPreferences.getInstance();
|
|
prefs.setStringList(_knownPrefsKey, updatedList);
|
|
|
|
emit(state.copyWith(knownIds: updatedList));
|
|
}
|
|
}
|