0

我正在使用 Flutter 挂钩通过组合 useMemorized 和 useFuture 来获取数据,如下所示:

final _latestDocsFuture =
    useMemoized(() => getLatestDocs());
final _latesetDocsSnapshot = useFuture(_latestDocsFuture);

这个钩子的问题是我无法重新触发 useFuture 以在出现错误的情况下重新获取数据(允许用户点击按钮以再次尝试获取数据)。有什么方法可以让我重新触发 useFuture 钩子吗?

4

1 回答 1

0

useMemoized钩子接受可用于创建 Future 的新实例的键列表,这将导致useFuture再次运行。

我建议使用UniqueKey该类来实现这一点

final reloadKey = useState(UniqueKey());
final latestDocsFuture = useMemoized(() => getLatestDocs(), [reloadKey.value],);
final latestDocsSnapshot = useFuture(latestDocsFuture);

然后,每当您希望重新加载时,您都可以更新reloadKey

reloadKey.value = UniqueKey();
于 2022-02-28T12:41:42.883 回答