【问题标题】:Use npm packages for flutter web when pub.dev plugins don't have web support当 pub.dev 插件不支持 web 时,使用 npm 包进行 Flutter web
【发布时间】:2021-01-25 23:00:54
【问题描述】:

我正在尝试在 Flutter 中制作一个应用程序,iOS+Android+Web 等等。插件不提供网络支持。

找到了同一个sdk的npm包,想用

使用 iOS+android 插件 sdk 实现 iOS+Android。 Flutter web + npm package sdk。

如果插件没有网络支持,有没有办法在 Flutter Web 应用程序中使用 npm/node 包?

【问题讨论】:

标签: javascript node.js typescript flutter flutter-web


【解决方案1】:

尝试使用 webpack。

在我的一个项目中,我不得不调用 Javascript(因为网络上的隔离不能按预期工作)。我用javascript创建了一个单独的项目,并将webpack脚本直接编译到flutter web文件夹中。当然,我没有使用任何 npm 包,但我不明白为什么它不应该工作。

这是我的 webpack.config.js(/src/worker.js 是入口 javascript 文件):

const CopyWebpackPlugin = require('copy-webpack-plugin');
const webpack = require('webpack');
const path = require('path');

module.exports = {
    mode: 'production',
    entry: './src/worker.js',
    output: {
        filename: '[name].bundle.js',
        path: path.resolve(__dirname, '../flutter_app/web/', 'my_js')
    }
}

在您的 Dart 代码中,您可以使用 Worker 类来调用脚本,例如:

var myWorker = Worker('../my_js/main.bundle.js');
    myWorker.onMessage.listen((returnValue) {
//Some processing here...
});
var event = {"arg1": "value1", "arg2": "value2"};
myWorker.postMessage(json.encode(event));

** 更新:这是接收调用的工作人员('./src/worker.js')的样子:

import algorithm from './index'; 

onmessage = async function(messageEvent) {

  let event=JSON.parse(messageEvent.data);
  let message=await algorithm (event);
  postMessage(message);

}

【讨论】:

  • 我也有同样的要求,但是你能解释一下这个工人阶级,你是做什么的吗?
  • 我用工人输入代码更新了我的答案。我正在开发一个游戏应用程序,我有一个运行 2 秒的算法来获得下一步行动。在 Android 上隔离工作得很好,但在网络上它运行在同一个线程中,这阻塞了主线程。这个工作人员配置工作正常。我不确定 Flutter Web 中的 Isolates 是否现在可以正常工作 - 如果可以,您可以使用常规隔离物。
猜你喜欢
  • 2022-11-22
  • 1970-01-01
  • 2021-08-25
  • 2020-08-02
  • 2020-06-24
  • 2020-08-06
  • 2021-08-06
  • 2021-07-06
  • 2020-02-23
相关资源
最近更新 更多