【问题标题】:Dart wrapper over js library and use it in flutter appjs 库上的 Dart 包装器并在 Flutter 应用程序中使用它
【发布时间】:2019-05-15 13:57:33
【问题描述】:

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

在 Flutter 中使用 JS 的唯一方法是使用 WebView。

Dart 仅为浏览器应用程序编译为 JS,而对于 Flutter,它编译为>本地机器代码。

使用包js将js代码直接转换为dart

package JS 不会转换 JS,它只是为 JS 函数创建代理以 >能够从 Dart 调用它们,但这也仅在 Dart web >applications 中受支持。

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

【问题讨论】:

  • 你认为你为什么需要 JavaScript?
  • 嗯,我认为如何包装 js lib 并使用它会是一个很好的用例。只是为了确保上面引用的答案是您的@Günter Zöchbauer。否则我会得到一个很好的推荐。附:我想我试图在 gitter flutter 频道中向您询问这件事和您的建议,但徒劳无功。感谢您在这里回答伙伴。
  • Gitter 有点难以跟上。我更喜欢这样的问题。人们通常会更加努力地在这里解释他们的问题/问题,并且不会与许多不相关的 cmets 混淆。这使得在不同任务之间跳转时更容易。 Flutter 团队 pub.dartlang.org/packages/webview_flutter 的 webview 插件像任何其他小部件一样内嵌显示(仍处于早期阶段)。

标签: javascript dart flutter currency


【解决方案1】:

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

进入按下提交按钮后,网站会简单地将您重定向到具有如下 URL 的不同页面(GET 请求):

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

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

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

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

【讨论】:

    【解决方案2】:

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

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

    编辑

    是的,你是对的,你只能使用来自flutter_webview_pluginevalJavascript函数从Flutter调用js。

    【讨论】:

    • Привет :) 我想在 Flutter 中使用调用 JS lib 函数的结果,但是 Flutter 中的 dart 代码一方面编译为原生代码而不是 js,另一方面我认为我可以' t 在flutter webview之外调用js lib。否则,如果我在谈论网络应用程序,您的答案应该很好。
    • @speedyGonzales,Здрасьте。是的,你是对的,你只能使用 Flutter 的 webview 插件中的 js 代码。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2020-11-18
      • 1970-01-01
      • 2020-12-07
      • 2021-08-17
      • 1970-01-01
      • 2021-07-24
      • 1970-01-01
      • 2014-12-22
      • 2012-06-11
      相关资源
      最近更新 更多