关于ZAKER 融媒体解决方案 合作 加入

Flutter 如何优雅的解决依赖版本冲突

CocoaChina 11-22

前言

Google 推出 flutter 这样一个新的高性能跨平台(Android,ios)快速开发框架之后,被业界许多开发者所关注。我在接触了 flutter 之后发现这个确实是一个好东西,好东西当然要和大家分享,对吧。

今天要跟大家分享的是如何解决 flutter 中依赖版本冲突。

这篇文章最初出现在:Iiro 的博客中 1。

为什么会存在版本依赖问题

我们在开发 flutter 项目中,常常会依赖第三方库。flutter 依赖项越多,就越有可能出现依赖版本冲突。

Because new_trend depends on build_runner >=0.9.0 which requires SDK version >=2.0.0-dev.61 <3.0.0, version solving failed.

pub get failed ( 1 )

它的 pubspec.yaml 文件应该看上去是这样的

dev_dependencies: build_runner: ^0.9.0

我们可以通过报错信息清楚地看到,这是由于 build_runner 和 SDK 版本冲突所导致的。

解决方法

当我们不清楚当前到底应该使用依赖的哪一个版本时,我们可以使用 any 来解决版本依赖版本冲突的问题。

dev_dependencies: build_runner: any

any 会自动调用 pub 的版本分析器,寻找合适的能够避免冲突的依赖版本并下载。我们将不会再看到 pub 抱怨版本依赖版本冲突啦!

还没完!

我们知道我们不应该把 any 留在这,所以我们需要将正确的依赖版本把 any 关键字替换掉!

使用 pubspec.lock 找到正确的版本

我们打开 pubspec.lock,这是根据当前项目依赖所生成的文件,记录了当前使用的依赖版本。

我们可以在这里找到版本分析器为我们找到的无冲突的依赖版本号,这里可以看到 build_runner 使用了 0.8.3 版本的依赖。

再回到 pubspec.yaml 文件,将 any 版本号替换成实际版本。

dev_dependencies: build_runner: 0.8.3

这样就可以完美解决版本依赖问题啦 ~

Q&A:

为什么不直接使用 any 作为版本号呢

在实际项目开发中,拥有不确定性的版本号会成为未来应用崩溃的一个极大的隐患。这可能将会使您的应用难以调试。所以请记住,不要在你的项目中留下 any 关键字!

参考

[ 1 ] https://iirokrankka.com/2018/08/28/resolving-dart-package-version-conflicts/

以上内容由"CocoaChina"上传发布 查看原文

觉得文章不错,微信扫描分享好友

扫码分享