Flutter和Openlayers - 包括颤动的{j}库

时间:2018-06-18 15:32:29

标签: javascript dart flutter openlayers

来自基于js / cordova的跨平台宇宙,我最近正在挖掘。所以我想知道直接在flutter中使用各种js库的选项。更具体我感兴趣的是在flutter中使用openlayers库创建一个多功能的地图视图,其中包含各种绘图和编辑功能。所以我想知道包含它的选项是什么。

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

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

  2. 创建自定义小部件: 我已经看到有方法可以将js代码直接转换为dart,使用包js(https://pub.dartlang.org/packages/js)和类型js_facade_gen(https://github.com/dart-lang/js_facade_gen),就像使用chartjs库(https://github.com/google/chartjs.dart/)一样。与此类似,应该可以自动将openlayers lib转换为dart。然而,主要问题是将其整合到颤动中,因为如果我是正确的,openlayers正在使用html5画布。 mapjs.dart包也没有任何提示如何将它包含在一个颤动的应用程序中。我还看到有一个传单插件(https://github.com/apptreesoftware/flutter_map)正在创建自己的小部件,但是它们似乎是手工重写代码(?),这对于拥有20.000行代码的开放者来说并不是真正的选择大气压。

  3. 我知道这不是本网站最好的问题格式,但我希望有人对如何开始或如何实现这一点有一些建议或提示,特别是对于第二个选项 - 第一个更直接向前。或者,如果你能想到第三种选择,请继续,我很感激任何线索。

1 个答案:

答案 0 :(得分:3)

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

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

  

使用包js

将js代码直接转换为dart

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