![](/img/trans.png)
[英]How to Mix Sound Null Safety and Unsound Null Safety in Flutter
[英]Unsound null safety without upgrading legacy packages
我的应用程序有很多不支持 Null Safety 的遗留库(例如EPUB 、 EPUB_KITTY ),并且作者已经处于非活动状态。
我读过我们可以通过在 main 中添加 // @dart=2.9 或在构建期间添加--no-sound-null-safety
来混合非空安全库和空安全库。
所以首先我将 pubspec.yaml 中的 sdk 更新为:
environment:
sdk: ">=2.12.0 <3.0.0"
然后我还更新了所有 dart 文件以支持空安全。
我运行的构建命令是:
flutter run --no-sound-null-safety
但是我遇到了 path_provider 的错误:^1.6.11:
../../flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_windows-0.0.4+1/lib/src/path_provider_windows_real.dart:126:25: Error: The getter 'addressOf' isn't defined for the class 'GUID'.
- 'GUID' is from 'package:win32/src/structs.dart' ('../../flutter/.pub-cache/hosted/pub.dartlang.org/win32-1.7.3/lib/src/structs.dart').
Try correcting the name to the name of an existing getter, or defining a getter or field named 'addressOf'.
knownFolderID.addressOf, KF_FLAG_DEFAULT, NULL, pathPtrPtr);
^^^^^^^^^
我认为这是因为空安全,但它不应该显示该错误,对吗? 因为我使用的是 --no-sound-null-safety 命令? 无论如何,我已将 path_provider 升级为path_provider: ^2.0.2 (latest null safety version)
以查看它是否会解决问题,但在构建后我遇到了另一个关于依赖项不兼容的问题,所以我更新了旧包再次修复不兼容问题,但最终我已经到了错误与 EPUB 包有关的地步,如下所述:
Because image >=3.0.1 depends on xml ^5.0.0 and epub >=1.3.0 depends on xml >=2.6.0 <4.0.0, image >=3.0.1 is incompatible with epub >=1.3.0.
So, because testco depends on both epub ^2.0.0 and image ^3.0.2, version solving failed.
我该怎么办? 这个包的作者已经处于非活动状态,所以我应该分叉 epub 包并手动更新 xml 库版本以修复构建错误吗? 或者有没有办法在不更新 epub 包内部的情况下解决这个问题? 请指教。 谢谢!
当您查看该包时,您会发现存在一个关于空安全的问题。
虽然作者多年来一直没有回复并且似乎不活跃,但人们已经对它进行了分叉,并且此分叉已更新为 null-safety。
https://pub.dev/packages/epubx
您必须测试这是否满足您的需求。 如果没有,请考虑帮助他们或自己分叉。
每个其他包也是如此。 检查他们的问题页面,看看其他人是否有同样的问题,也许已经修复,或者他们自己修复了。 如果没有关于空安全的问题,您可能应该一起寻找不同的包,因为这意味着除了您之外没有人在使用它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.