【问题标题】:how to use local flutter package in another flutter application?如何在另一个颤振应用程序中使用本地颤振包?
【发布时间】:2018-12-16 17:12:30
【问题描述】:

如何在另一个flutter应用中使用本地flutter包?

我使用以下命令创建了一个包:

flutter create --template=package my_new_package

然后在我的应用程序源代码中 => main.dart

import "package:my_new_package/my_new_package.dart" // can not find the package

【问题讨论】:

  • 我也有同样的烦恼。虽然应用程序运行,但出现“URI 不存在”错误。我执行了“flutter packages get”,结果还是一样。

标签: dart flutter flutter-dependencies


【解决方案1】:

在你的 Flutter 应用中找到这个文件 => pubspec.yaml

使用本地依赖

    dependencies:
       flutter:
         sdk: flutter
       my_new_package:
         path: ./my_new_package

注意:上面的./my_new_package 表示包含pubspec.yaml 包的my_new_package 目录是应用程序的子目录。

如果您将包作为与应用程序处于同一级别的目录,换句话说,在目录树的上一级,您可以使用../my_new_package(注意双点)或包的完整路径目录。

【讨论】:

  • 警告:这里有一个陷阱,我想提醒人们注意。不要在你的颤振根目录中创建一个名为packages 的文件夹并将包放在那里。 packages 文件夹在构建时被删除。
  • @SacWebDeveloper 上面的答案是正确的,没有错误。我的评论只是一个警告。如果您有项目特定的包,天真的方法是将它们放在项目根目录下的/packages 目录中,与/android/ios/tests 等处于同一级别。在撰写本文时/packages 在构建过程中被覆盖,会破坏你的包。有一段时间没有测试了。
  • 官方文档链接是here,用于包和插件。
  • @TheGwa 哦。这是有用的信息。谢谢。也许将其称为plugins 或将它们添加到lib/packages?也许社区应该提出一个约定。
  • 似乎/packages 在构建过程中不再被覆盖,官方文档没有提到将文件放在以这种方式命名的目录中的限制。我相信警告不再适用。
【解决方案2】:

路径依赖:Flutter 应用可以通过文件系统路径依赖插件:依赖。路径可以是相对的或绝对的。例如,要依赖位于应用旁边目录中的插件 plugin1,请使用以下语法:

dependencies:
  plugin1:
    path: ../your_package/

【讨论】:

  • 当我想将插件依赖于同一路径中的插件时,这对我很有用。
  • 再次强调一下,你的应用和包应该在同一个目录中
【解决方案3】:

对于整个过程:

  1. 下载您要使用的插件的代码,并将其放在与您的 Flutter 项目目录“相同”的级别

     -- plugin-name  
     -- your flutter directory -- lib
                               -- android
                               -- ios etc etc
    
  2. 将插件路径添加到 pubspec.yaml。 *如果您不确定要使用的正确插件名称,请查看插件的 pubspec.yaml 文件中的 name: 属性。插件目录也必须保存同一​​个name:

    dependencies:
     plugin-name:
       path: ../plugin-name
    
  3. 运行Pub get,您可以像任何其他插件一样导入。唯一的区别是,当你在开发过程中点击任何一个插件类时,它会指向本地文件。

【讨论】:

    【解决方案4】:

    嘿,当我开始使用颤振时,我遇到了同样的问题。 我在我的应用程序中实现了pdf_view 插件的示例,用于更改微光效果而不是CircularProgressIndicator()

    一些知识

    您可以编辑由flutter pub get 获取的插件,但它们可能会在您通过flutter 创建应用程序包时被替换。

    现在您对示例插件的回答假设以advance_pdf_viewer 为例 GitHub Link

    1. 下载zip文件并解压到pdf_viewer/

    2. 确保pdf_viewer/ 包含所有文件,包括libAndroidiOS 和所有相关文件。

    3. 例如,将您的 pdf_viewer 文件夹复制到您的项目目录中 我的项目是invoice_viewer,所以它的根目录包含lib、Android、iOS 等所有文件夹。将其与libAndroidiOS 一起复制到此根目录中。

    4. 现在打开你的pubsec.yaml 并编写如下代码

    dependencies:
      flutter:
        sdk: flutter
    
      #  advance_pdf_viewer: ^2.0.0
      advance_pdf_viewer:
        path: ./pdf_viewer
    
    1. 在评论中,我已将服务器版本替换为本地版本,并在插件的 viewer.dart 文件中进行更改以实现所需的更改。

    希望您和其他人从这一发现中获得一些信息!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-08-20
      • 1970-01-01
      • 1970-01-01
      • 2018-11-07
      • 2021-01-26
      • 1970-01-01
      • 2021-01-05
      • 2021-03-20
      相关资源
      最近更新 更多