如何在Flutter中异步调用JavaScript?

shr*_*ing 4 flutter flutter-web

我有一个 flutter web,其中有一个像这样的 JavaScript 函数:

async function doSomething(value) {
   let x = await something(x);
   return x
}
Run Code Online (Sandbox Code Playgroud)

当我现在使用 Dart 时,我有:

final result = await js.context.callMethod('doSomething', ['someValue']));
Run Code Online (Sandbox Code Playgroud)

[object Promise]当我打印它时,它会返回,但它确实ignore await,没有.then函数,因此不能与promiseToFuture任何一个一起使用。

如何等待 JavaScript 执行?

Are*_*res 9

只是await不起作用js.context.callMethod

这必须添加到您的代码中的某个位置,也许像javascript_controller.dart

@JS()
library script.js;

import 'package:js/js.dart';
import 'dart:js_util';

@JS()
external dynamic doSomething();
Run Code Online (Sandbox Code Playgroud)

进而

Future getSomething(String someValue) async {
  var result = await promiseToFuture(doSomething());
  return result;
}
Run Code Online (Sandbox Code Playgroud)