You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter Web调用JS异步函数返回[object Promise]的原因咨询

问题原因及解决方法

原因

JS的async函数本质上会返回一个Promise对象,而你用dart:js的js.context.callMethod调用该函数时,得到的是JS层面的Promise实例,并非Dart的Future类型。Dart的await关键字只能处理Dart自身的Future,无法直接解析JS的Promise,所以直接await后拿到的还是原始的JS Promise对象,打印就会显示[object Promise]。

解决方法

你需要把JS Promise转换成Dart能识别的Future,可以用package:js_util里的promiseToFuture工具方法:

  1. 先导入依赖包:
import 'package:js_util/js_util.dart';
  1. 修改调用代码:
// 先调用JS函数拿到Promise
final jsPromise = js.context.callMethod('doSomething', ['someValue']);
// 转换为Dart Future并await
final result = await promiseToFuture(jsPromise);

另外注意你原Dart代码里有个语法错误:['someValue']));多了一个右括号,改成['someValue']);即可。

内容的提问来源于stack exchange,提问作者BlackBeard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 10:45:37