如何在flutter Hooks useFuture()中使用多个嵌套的异步调用?

问题描述

我有一个 flutter hook,它从本地存储中获取 currentSettings,并根据 localstorage 中存在的值生成一些设置。

ValueNotifier<Map<String,dynamic>> useCurrentSettings() {
  final currentSettings = useValueNotifier({
    "currentFeeling": {},"color": null,"currentLayout": "modern",});

在这里,从 localstorage 获取所有可用的设置,

  final currentFeeling = useFuture(useMemoized(() => "currentFeeling".local));
  final currentLayout = useFuture(useMemoized(() => "currentLayout".local));
  var color;

一旦来自 localstorage 的 currentFeeling 数据可用,我想根据 currentFeeling 中存在的 imageUrl 找到匹配的调色板,

  if (currentFeeling.hasData) {

    final parsedFeeling = json.decode(currentFeeling.data);
    currentSettings.value.update('currentFeeling',(_) => parsedFeeling);

    if (color == null) {
      color = useFuture(useMemoized(() => getColorPalette(parsedFeeling["imageUrl"])));
    } else if (color.hasData) {
      currentSettings.value.update('color',(_) => color);
    }

  }

  if (currentLayout.hasData) {
    currentSettings.value.update('currentLayout',(_) => currentLayout.data);
  }
  

  return currentSettings;
}

getColorPalette 如下,从网络动态获取图像并找到匹配的调色板:

getColorPalette(feeling) async {
  final PaletteGenerator generator = await PaletteGenerator.fromImageProvider(
    NetworkImage(feeling["url"]),maximumColorCount: 20,);
  return generator;
}

我在尝试使用这个自定义钩子时遇到如下不匹配钩子:

Bad state: Type mismatch between hooks:
- previous hook: _ListenableHook
- new hook: _MemoizedHook<Future<dynamic>>

有什么指点吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...