import 'package:flutter/material.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; typedef SideEffect = ({ VoidCallback clear, ValueSetter> mutate, AsyncSnapshot snapshot, }); SideEffect useSideEffect({bool preserveState = true}) { final effect = useState?>(null); final snapshot = useFuture(effect.value, preserveState: preserveState); void clear() => effect.value = null; void mutate(Future future) => effect.value = future; return ( clear: clear, mutate: mutate, snapshot: snapshot, ); }