如何在 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 的包?的主要内容,如果未能解决你的问题,请参考以下文章
使用带有 github 操作的 Flutter Web 时如何访问机密