【问题标题】:How to add a package from GitHub in Flutter?如何在 Flutter 中添加来自 GitHub 的包?
【发布时间】: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

标签: github dart flutter package


【解决方案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 代码访问权限,然后它才起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-17
    • 2020-08-24
    • 2019-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多