使用Flutter pub忽略子包?

cetgtptt  于 2023-05-18  发布在  Flutter
关注(0)|答案(1)|浏览(195)

我们只支持Android和iOS,但我们正在使用的包(flutter-maplibre-gl)的web子包(maplibre_gl_web)发生版本冲突,即:
因为git中的mapibre_gl_web的每个版本都依赖于image ^3.0.2,flutter_launcher_icons >=0.12.0依赖于image ^4.0.15,所以git中的mapibre_gl_web与flutter_launcher_icons >=0.12.0不兼容。
有没有办法通过排除未使用的子包来解决这个问题?

31moq8wy

31moq8wy1#

我不认为有一种直接的方法可以排除传递依赖,但是你可以使用dependency_overrides来覆盖传递依赖的版本约束。也就是说,你应该能够做到:

dependency_overrides:
  image: ^4.0.15

强制所有package:image在依赖关系图中使用4.0.15版本(或兼容版本)。也就是说,它将强制maplibre_gl_web使用image: ^4.0.15依赖项。
请注意,这样做可能会破坏maplibre_gl_web包,但由于您实际上并没有使用它,所以这可能是可以的。
或者,您可以覆盖maplibre_gl_web依赖本身并将其指向一个空包:

dependency_overrides:
  maplibre_gl_web:
    path: fake_maplibre_gl_web

然后创建一个fake_maplibre_gl_web子目录,其中包含自己的pubspec.yaml文件:

name: maplibre_gl_web
publish_to: 'none'
version: 0.0.0

空包方法需要做更多的工作,但在功能上等同于排除包。它也可能更安全一点,因为它不会覆盖flutter_launcher_icons想要使用的image包的任何版本。

相关问题