当前位置: 首页 > 知识库问答 >
问题:

如何在为web构建flutter项目时忽略包?

宗政子辰
2023-03-14

我有一个在macOS上使用< code > flutter _ libserialport 库的项目。我正在修改它,以在网络上工作,但这个库不能在网络上工作。

我正在使用javascript中的< code>navigator.serial构建一个web实现,效果很好。

然而,当我试图为web构建项目时,我得到了以下错误

/opt/homebrew/Caskroom/flutter/2.2.3/flutter/.pub-cache/hosted/pub.dartlang.org/libserialport-0.2.0+3/lib/src/config.dart:25:8: Error: Not found: 'dart:ffi'
import 'dart:ffi' as ffi;

这是有道理的,因为FFI在网络上不可用。

但我甚至不需要网络上的自由软件库

我怎样才能让颤抖忽略它?

我尝试了这个,但它不包含如何排除软件包的信息。

它也不包含有关如何专门针对Web忽略它的信息。它似乎只是一般地忽略它。

共有1个答案

谭文林
2023-03-14

也许您应该使用kIsWeb谓词来保护libserialport,如下所示:

if(!kIsWeb){
// libserialport code execution here
}

我也搜索了很多,但没有找到一种方法可以做到这一点,我认为这应该由包本身而不是包的用户来处理,例如在< code>path_provider中。

作为一种解决方法,我仅为Web创建了一个虚拟的libseralportSerialPort类,如下所示:

dummy_serialport.dart

class SerialPort {
  final String name;
  static List<String> availablePorts = ['dummy'];
  static SerialPortError? lastError;
  SerialPort(this.name);

  bool openReadWrite() {
    return false;
  }
}

class SerialPortError {}

// add more properties and functions as needed

主要飞镖


import 'package:libserialport/libserialport.dart'
    if (dart.library.html) './dummy_serialport.dart'
    if (dart.library.io) 'package:libserialport/libserialport.dart';

....
 if (!kIsWeb) {
      final name = SerialPort.availablePorts.first;
      final port = SerialPort(name);
      if (!port.openReadWrite()) {
        print(SerialPort.lastError);
        exit(-1);
      }
    }
    ....
....

这很糟糕,我知道:(但它的工作原理!也许您可以联系包作者以获取更多见解,如果打开PR,其中接口与FFI实现分开,以便导入类不会破坏Web或其他内容。

 类似资料:
  • 编辑:我编辑了我的大摇大摆的路径。但我现在正处于错误以下。

  • null 我已经在“Manage Jenkins”-->“Configure System”下配置了Maven设置。 当我在“预步骤”部分创建“调用顶级Maven目标”步骤时,所有工作都按照预期进行。在“目标”行中,我可以指定“-x”、“clean install”等,并且maven通过打印这些目标,例如: [DEBUG]正在从.../settings.xml读取全局设置 [DEBUG]正在使用.

  • 我的项目有一个功能良好的TFS构建设置,它与我以前的android项目配合得很好。 所以最近我创建了一个新的Android项目,我试图用TFS构建和创建一个apk,但是当它启动单元测试部分时,我得到了一个错误,它说: 未能应用插件的com。Android内部的应用程序'。 Android Gradle插件需要Java11才能运行。您正在使用Java1.8。您可以尝试以下选项: 更改IDE设置。 改

  • 问题内容: Eclipse VERSION 3.7似乎存在一些问题 当我编译单个项目(通过ant或buildProject)时,Eclipse开始在工作空间中构建所有项目,这需要很长时间。 我尝试过两种方式来构建项目- 右键单击ant文件,选择Run And And Build。 在Eclipse中右键单击项目,选择Build Project。 Eclipse会以两种方式首先开始构建其他打开的项目

  • 问题内容: 我需要使用以下命令创建一个zip文件: 这可行,但是创建的zip文件会创建一个目录结构,将目录模仿为原始文件。我不需要很多额外的文件夹。 粗略浏览手册页或Google搜索时,我没有找到答案。 问题答案: 您可以使用。

  • 我试图为一个使用蓝牙进行通信的应用程序启动一个flutter项目。为此,我使用了flutter blue。 不幸的是,当尝试(在Android设备上)运行我创建的第一个示例时,遇到了以下错误: 如果我在Android Studio上,我会知道如何升级Android minSdkVersion,但在一个扑朔迷离的项目(使用VSCode)上,我有点迷失了。 是否有可能用颤振来增加最小Sdk版本,以及如