useMap<K, V> function

MapAction<K, V> useMap<K, V>(
  1. Map<K, V> initialMap
)

Flutter state hook that tracks a value of a Map.

Implementation

MapAction<K, V> useMap<K, V>(Map<K, V> initialMap) {
  final map = useState(initialMap);

  final value = useCallback<Map<K, V> Function()>(() {
    return map.value;
  }, const []);

  final add = useCallback<void Function(K key, V entry)>((key, entry) {
    map.value = {
      ...map.value,
      ...{key: entry}
    };
  }, const []);

  final addAll = useCallback<void Function(Map<K, V>)>((value) {
    map.value = {...map.value, ...value};
  }, const []);

  final replace = useCallback<void Function(Map<K, V>)>((newMap) {
    map.value = newMap;
  }, const []);

  final remove = useCallback<void Function(K key)>((key) {
    final removedMap = {...map.value};
    removedMap.remove(key);
    map.value = removedMap;
  }, const []);

  final reset = useCallback<VoidCallback>(() {
    map.value = initialMap;
  }, const []);

  final state =
      useRef(MapAction<K, V>(value, add, addAll, replace, remove, reset));
  return state.value;
}