useSet<E> function
Flutter state hook that tracks a Set.
Implementation
SetAction<E> useSet<E>(Set<E> initialSet) {
final set = useState(initialSet);
final value = useCallback<Set<E> Function()>(() {
return set.value;
}, const []);
final add = useCallback<void Function(E element)>((element) {
set.value = {
...set.value,
...{element}
};
}, const []);
final addAll = useCallback<void Function(Set<E>)>((value) {
set.value = {...set.value, ...value};
}, const []);
final replace = useCallback<void Function(Set<E>)>((newMap) {
set.value = newMap;
}, const []);
final remove = useCallback<void Function(E element)>((element) {
final removedSet = {...set.value};
removedSet.remove(element);
set.value = removedSet;
}, const []);
final reset = useCallback<VoidCallback>(() {
set.value = initialSet;
}, const []);
final toggle = useCallback<void Function(E element)>((element) {
final toggleSet = {...set.value};
toggleSet.contains(element)
? toggleSet.remove(element)
: toggleSet.add(element);
set.value = toggleSet;
}, const []);
final state =
useRef(SetAction<E>(value, add, addAll, replace, toggle, remove, reset));
return state.value;
}