main
dart 36 lines 863 Bytes
Raw
1 import 'package:flutter_riverpod/flutter_riverpod.dart';
2
3 final messageSelectionModeProvider =
4 NotifierProvider<MessageSelectionModeNotifier, bool>(
5 MessageSelectionModeNotifier.new,
6 );
7
8 class MessageSelectionModeNotifier extends Notifier<bool> {
9 @override
10 bool build() => false;
11
12 void enable() => state = true;
13
14 void disable() {
15 state = false;
16 ref.read(selectedMessageIdsProvider.notifier).clear();
17 }
18 }
19
20 final selectedMessageIdsProvider =
21 NotifierProvider<SelectedMessageIdsNotifier, Set<String>>(
22 SelectedMessageIdsNotifier.new,
23 );
24
25 class SelectedMessageIdsNotifier extends Notifier<Set<String>> {
26 @override
27 Set<String> build() => const {};
28
29 void toggle(String id) {
30 final updated = {...state};
31 if (!updated.remove(id)) updated.add(id);
32 state = updated;
33 }
34
35 void clear() => state = const {};
36 }