一尘不染

Flutter和Openlayers-在Flutter中包括js库

flutter

来自基于js /
cordova的跨平台世界,最近我正在研究扑扑。因此,我想知道直接在flutter中利用各种js库的选项。更具体地讲,我对在flutter中使用openlayers库来创建具有各种绘图和编辑功能的通用地图视图感兴趣。所以我想知道有哪些选项可以包含它。

到目前为止,我看到了两种主要方法:

  1. 使用webview:即使没有原生的webview小部件,在flutter中也有一个插件(https://github.com/dart-flitter/flutter_webview_plugin)。我在这里看到的主要优点是“按原样”使用openlayers库,但是该插件处于早期状态,我还没有看到在webview中的flutter和js函数之间建立通信的方法。此外,使用webview(这只是我的假设)可能比使用dart代码创建适当的小部件要慢。

  2. 创建自定义窗口小部件:我已经看到了使用js包(https://pub.dartlang.org/packages/js)和键入js_facade_gen(https://github.com/)将js代码直接转换为dart的方法。dart-lang / js_facade_gen),就像使用chartjs库(https://github.com/google/chartjs.dart/)一样。如此类似,应该可以将openlayers lib自动转换为dart。然而,主要问题是将其集成到flutter中,因为如果我正确的话,openlayers正在使用html5 canvas。同样,chartjs.dart包也没有任何提示如何将其包含在flutter应用程序中。我也看到有一个传单插件(https://github.com/apptreesoftware/flutter_map)创建自己的窗口小部件,但是他们似乎要手动重写代码(?),这是针对具有20.000行代码的公开发布者,实际上不是atm选项。

我知道这不是该网站的最佳问题格式,尽管如此,我希望有人对从何处开始或如何实现这一点提供一些建议或提示,尤其是对于第二个选项-
第一个更直接。或者,如果您可以想到第三种选择,请继续。我非常感谢您提供的任何线索。


阅读 762

收藏
2020-08-13

共1个答案

一尘不染

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

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

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

包JS不会转换JS,它只是为JS函数创建代理以能够从Dart调用它们,但这也仅在Dart Web应用程序中受支持。

2020-08-13