mirror of
https://github.com/lucavenir/go_router_riverpod.git
synced 2025-08-06 14:59:53 +08:00
21 lines
571 B
Dart
21 lines
571 B
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter_hooks/flutter_hooks.dart';
|
|
|
|
typedef SideEffect<T> = ({
|
|
VoidCallback clear,
|
|
ValueSetter<Future<T>> mutate,
|
|
AsyncSnapshot<T?> snapshot,
|
|
});
|
|
|
|
SideEffect<T> useSideEffect<T>({bool preserveState = true}) {
|
|
final effect = useState<Future<T>?>(null);
|
|
final snapshot = useFuture<T?>(effect.value, preserveState: preserveState);
|
|
void clear() => effect.value = null;
|
|
void mutate(Future<T> future) => effect.value = future;
|
|
return (
|
|
clear: clear,
|
|
mutate: mutate,
|
|
snapshot: snapshot,
|
|
);
|
|
}
|