Dart 包装 js 库并在 flutter 应用程序中使用它

Dart wrapper over js library and use it in flutter app

简单地说,我想制作小型货币兑换应用程序(宠物项目-我想要免费 API(每月 1000 次请求,包括更多货币是一个完美的选择))。我不喜欢到目前为止找到的免费 API,但我找到了这个网站 https://bg.coinmill.com/,我想将它用于我的目的。正在阅读类似问题的答案:

The only way to make use of JS in Flutter is using WebView.

Dart compiles to JS only for browser applications, for Flutter it compiles >to native machine code.

convert js code direcly to dart, using package js

package JS doesn't convert JS, it just creates proxies for JS functions to >be able to call them from Dart, but that is also only supported in Dart web >applications.

简单地说,如果不遇到一些编译错误和一些解决方法,这是不可能的。然而 https://github.com/pichillilorenzo/flutter_inappbrowser 看起来很有希望。嵌入网页会很难看,我将无法控制ui/settings。我现在的选择是寻找另一种免费货币 API 或尝试找到解决方法。我倾向于另一个 API,但不确定是哪个。有什么建议吗?

那么,我怎么理解你的问题,你有一些 js 库,你想在 Dart 中使用它?

如果有疑问,是的,您可以使用 Dart JS Intertop 来完成。更多信息在link.

编辑

是的,你是对的,你只能使用 flutter_webview_plugin 中的 evalJavascript 函数从 Flutter 中调用 js。

所以基本上你真正想做的是使用该网站在后台进行货币转换(输入值,按 "Convert"),然后在你的 Flutter 应用程序中显示结果?你不需要 javascript。

进入后按下提交按钮,该网站只是将您重定向到另一个页面(GET 请求),其中包含 URL 如下所示:

https://bg.coinmill.com/CAD_USD.html?CAD=22

使用 dart 的 http 库以正确的 currency/value 参数执行相同的请求。请求的结果包含网页的源代码。

不显示网页,只需要从网页源代码中读取你需要的值即可:

<div id="currencyBox1">
<input class="currencyField" ... value="16.46" ...>
<a href="/USD_calculator.html">САЩ долар (USD)</a>
</div>

您可以使用 Firebase Cloud Functions 并将您的函数包装在可调用函数中。您将拥有所有节点 js 环境,Dart 代码将只调用一个函数。