我使用Flutter钩子通过组合useMemorialed和useFuture来获取数据,如下所示:
final _latestDocsFuture =
useMemoized(() => getLatestDocs());
final _latesetDocsSnapshot = useFuture(_latestDocsFuture);
这个钩子的问题是,如果出现错误,我无法重新触发useFuture来重新获取数据(允许用户点击按钮再次尝试获取数据(。有什么方法可以让我重新触发useFuture钩子吗?
useMemoized
钩子接受一个可用于创建Future的新实例的键列表,这将导致useFuture
再次运行。
我建议使用UniqueKey
类来实现这个
final reloadKey = useState(UniqueKey());
final latestDocsFuture = useMemoized(() => getLatestDocs(), [reloadKey.value],);
final latestDocsSnapshot = useFuture(latestDocsFuture);
然后,无论何时您希望重新加载,都可以更新reloadKey
的值
reloadKey.value = UniqueKey();