我将把它作为一个更长的答案,而不仅仅是专门针对您的确切库,因为这是一个我可以看到更经常发生的问题。以下选项可能不适用于您的用例,但也适用于其他情况。
选项 1 - 检查 beta 版本
有时迁移已完成,但尚未稳定发布。您可以查看 pub 上的“版本”选项卡,看看其中一个预发布版本是否标有 Null Safety 徽章:
选项 2 - 检查存储库
有时迁移已完成,但尚未在 pub 上发布。有几种检查方法:
- 查看 pubspec.yaml,environment.sdk 键应列出 '>=2.12.0 =2.14.0
- 查看拉取请求并搜索 null 安全性;也许一个已经合并,这表明更改在它合并的分支上
- 调查问题并寻找零安全性;也许一个已经关闭,维护者在线程中删除了“完成”或类似的东西,这表明更改在它被合并的分支上
如果您确实发现存储库所在的版本是 null 安全的,则可以在 pubspec 文件中使用 git 引用:
link:
git:
url: https://github.com/galonsos/link
ref: master
阅读更多关于从 git in the pub docs 引用包的信息。
选项 3 - 检查存储库的分叉
这是您可能会与选项 2 一起执行的操作。在滚动浏览问题和 PR 时,您可能会偶然发现有人说“我在我的 fork 上做了这个”,或者有人将库转换为 (这发生在您的案例中:relevant PR)。如果您发现一个积极维护的分支满足您的要求,请像以前一样在您的 pubspec 文件中使用 git 引用来引用它。
选项 4 - 打开一个问题并等待(如果尚不存在)
这显然取决于包的作者是否仍然活跃在某个地方,或者您是否有时间等待。无论哪种方式,为一个问题打开一个问题从来都不是一个坏主意。
选项 5 - 自己动手
将库迁移到空安全可能会很耗时,具体取决于其大小和复杂性。无论如何,如果您不想从头开始重写一个非常具体的库,那么它可能是您唯一的选择,这是一个很好的练习,可以更好地理解库和飞镖本身。
如果您很好,请成为您希望在您之前找到的人,并在完成后打开原始存储库的 PR,这样其他人已经获得了选项 3 的帮助 :) 当然,使用 git参考使用您新升级的软件包。
选项 6 - 使用替代方法
这可能并不总是有效,但可能比自己执行 null 安全迁移更快。通常有其他包以稍微不同的方式做类似的事情。即使没有,您有时也可以自己构建一个快速的替代方案。例如,可以使用一些 GestureDetector 或 InkWell 和 url_launcher 包(与 used in the link package 相同的设置)快速构建链接。
选项 7 - 丢弃声音零安全
如果没有其他选项对您有效,您可以通过使用 --no-sound-null-safety 运行您的应用程序来降低声音空值安全性。您可以通过注释使分析器警告静音:
// ignore: import_of_legacy_library_into_null_safe
import 'package:link/link.dart';
不过,我不确定这会如何影响热重载,在此之前尝试使用其他选项之一是个好主意。