如何在 Flutter 中添加来自 GitHub 的包?

Posted

技术标签:

【中文标题】如何在 Flutter 中添加来自 GitHub 的包?【英文标题】:How to add a package from GitHub in Flutter? 【发布时间】:2019-05-30 01:36:38 【问题描述】:

我需要使用一个包的最新源代码,而最新源代码尚未发布。 我应该在pubspec.yaml 中写什么来获取 Github 中的包?

下面的代码不起作用。它不下载包,我无法将它导入到我的源代码中

dependencies:
  flutter:
    sdk: flutter

  carousel_pro:
    git:
      url: https://github.com/jlouage/flutter-carousel-pro.git

【问题讨论】:

你跑flutter packages get了吗? @GünterZöchbauer,是的。你知道哪个路径应该是 github 包吗?默认导入看起来像这样 'import 'package:flutter_redux/flutter_redux.dart';'。可能有另一种从github导入包的方法吗? .packages 文件列表flutter-carousel-pro? @GünterZöchbauer,是的。 'carousel_pro:file:///Users/kvyrodov/Flutter/.pub-cache/git/flutter-carousel-pro-e8df71fa66dbe72fe770515737506e266d03a5fd/lib/' 尝试重启IDE 【参考方案1】:

pubspec.yaml 的示例


与特定分支的依赖关系:

dependencies:
  flutter:
    sdk: flutter

  carousel_pro:
    git:
      url: git://github.com/jlouage/flutter-carousel-pro.git
      ref: main # branch name

与特定提交的依赖关系:

dependencies:
  flutter:
    sdk: flutter

  carousel_pro:
    git:
      url: git://github.com/jlouage/flutter-carousel-pro.git
      ref: ea12e41 # commit hash

导入包的文件示例:

import 'package:carousel_pro/src/carousel_pro_widgets.dart';
import 'package:flutter/material.dart';

class NewsCarousel extends StatelessWidget 
  @override
  Widget build(BuildContext context) 
    return SizedBox(
      height: 200.0,
      child: WidgetCarousel(
        autoplay: false,
        pages: [],
      ),
    );
  

注意:如果您的 IDE 没有看到该软件包,请尝试重新启动它。

【讨论】:

有什么方法可以使用特定版本的库吗? @Mehdico 你可以指定你依赖的包的版本。如果你问的是 git 包,那么你可以在这里阅读更多关于它的信息 dart.dev/tools/pub/dependencies#git-packages 私有 github 存储库怎么样。假设我正在开发自己的包并且我不想在任何地方发布它,那也可以吗? 使用 main 而不是 master,如果你已经命名了你的 repo master 重要提示:上面带有“url: git://...”的解决方案将不再起作用,因为 git 停止支持未经身份验证的“git://”协议github.blog/2021-09-01-improving-git-protocol-security-github【参考方案2】:

以上答案是正确的,但我添加了一些例子。

所以要使用 pub/package/lib 而不在 pub.dev 上发布:

1.本地 - 保存在某个本地文件夹中

dependencies:
  library_name:
   path: /path/to/library_name

2。托管 - 推送到 Github、Gitlab 等。

dependencies:
  library_name:
   git: https://github.com/username/library_name

或针对确切的分支

dependencies:
  library_name:
   git:
    url: https://github.com/username/library_name.git
    ref: dev    #branch name

或以精确提交为目标

dependencies:
  library_name:
   git:
    url: https://github.com/username/library_name.git
    ref: e234072340    #commit reference id

其中“library_name”必须与该 pub 的 pubspec.yaml 中声明的“name”相同。

【讨论】:

【参考方案3】:

我将展示这个用例,您想要访问除 main/master 之外的分支中的特定文件夹:


  amplify_flutter:
    git:
      url: git://github.com/aws-amplify/amplify-flutter.git
      ref: null-safety-master
      path: packages/amplify_flutter/

【讨论】:

您的回答对我有用。我只是好奇如果我们想使用这个“路径:”参数添加多个特定文件夹怎么办。我们怎样才能做到这一点? @UlaşKasım 我没有尝试过,所以我不能确定。【参考方案4】:

以上内容对我不起作用,但将 url 更改为使用 https 确实:

dependencies:
  flutter:
    sdk: flutter

  flutter_tflite:
      git:
        url: https://github.com/qookit/flutter_tflite.git
        ref: main

“main”是我有兴趣使用的分支的名称。

我第一次运行“flutter pub get”时,它打开了一个浏览器窗口,要求我提供我的 git 凭据。

【讨论】:

这里也一样,我之前有 git:// 并且收到错误说它找不到存储库。当我将其更改为 https:// 时,它工作正常。我确实必须授予对存储库的 VS 代码访问权限,然后它才起作用。

以上是关于如何在 Flutter 中添加来自 GitHub 的包?的主要内容,如果未能解决你的问题,请参考以下文章

Flutter:如何向本地通知添加按钮

Flutter:如何从 appbar 动作中显示快餐栏

使用带有 github 操作的 Flutter Web 时如何访问机密

如何在flutter中访问和更改来自不同文件的变量

如何将来自 github 的“当前连续”贡献添加到我的博客?

如何在 Flutter 中缓存来自 Firebase 的图像?