Flutter 如何在使用Flatter_svg包时修复此nullOk错误?
我连接了这个包,将它添加到main.dart,我试图编译这个应用程序,但是我得到了这个错误。救命啊!我该怎么办 错误Flutter 如何在使用Flatter_svg包时修复此nullOk错误?,flutter,dart,Flutter,Dart,我连接了这个包,将它添加到main.dart,我试图编译这个应用程序,但是我得到了这个错误。救命啊!我该怎么办 错误 在调试模式下启动XT1562上的lib\main.dart。。。 正在运行Gradle任务“assembleDebug”。。。 /D:/flatter/.pub cache/hosted/pub.dartlang.org/flatter_svg-0.18.1/lib/src/picture_provider.dart:50:59:错误:没有名为“nullOk”的命名参数。 上下
在调试模式下启动XT1562上的lib\main.dart。。。
正在运行Gradle任务“assembleDebug”。。。
/D:/flatter/.pub cache/hosted/pub.dartlang.org/flatter_svg-0.18.1/lib/src/picture_provider.dart:50:59:错误:没有名为“nullOk”的命名参数。
上下文!=无效的localeOf(上下文,nullOk:true):null,
^^^^^^
/D:/flatter/packages/flatter/lib/src/widgets/localizations.dart:413:17:Context:找到此候选项,但参数不匹配。
静态区域设置localeOf(BuildContext上下文){
^^^^^^^^
失败:生成失败,出现异常。
*其中:
脚本“D:\flatter\packages\flatter\u tools\gradle\flatter.gradle”行:991
*出了什么问题:
任务“:app:compileFlutterBuildDebug”的执行失败。
>进程“命令”D:\flatter\bin\flatter.bat“”以非零退出值1结束
*尝试:
使用--stacktrace选项运行以获取堆栈跟踪。使用--info或--debug选项运行以获取更多日志输出。使用--scan运行以获取完整的细节。
*得到更多的帮助https://help.gradle.org
构建在15秒内失败
异常:Gradle任务assembleDebug失败,退出代码为1
添加以下依赖项
运行flatter clean
命令
运行flatterpub-get
命令
运行flatterrun
命令或运行项目
问题是,启用了空安全功能的颤振版本(在撰写本文时,当前在beta频道上),nullOk
参数已被删除Localizations.localeOf
,但您使用的是一个仍在使用nullOk
的包(在本例中为flatter\u svg
)
如果您使用的是Flitter的空安全版本,那么您也应该使用其他软件包的空安全版本(如果可用)。或者,您可以使用最新版本的Flitter而不使用空安全(版本1.22.x)直到您的所有依赖程序包都已迁移以实现空安全性。在我最终获得解决方案之后,我遇到了同样的问题。
这里很简单:
首先,添加预发布的以下依赖项:
flutter_svg: ^0.20.0-nullsafety.3
然后运行flatterpub-get
命令
现在您可以运行您的项目了。请确认没有错误。在本地缓存文件/lib/src/picture\u provider.dart的第57行上。(请参阅错误消息中的完整路径)替换
Localizations.localeOf(context,nullOk:true)
,带有Localizations.maybellocaleof(context)
这是一个快速且不干净的解决方案,但应一直保持到软件包修复为止。请注意,如果您想为自己或正在使用的软件包修复此错误,可以通过以下方式进行修复
为了修改代码以使用新形式的API,请将包含nullOk=true作为参数的所有调用实例转换为使用API的maybe形式
MediaQueryData?data=MediaQuery.of(上下文,nullOk:true);
变成
MediaQueryData?data=MediaQuery.maybeOf(上下文);
每个人都是对的:将flatter\u svg:^0.20.0-nullsafety.3
或flatter\u svg:^0.19.3
(如果您还不能迁移到null safety)是解决方案。
我想补充一点:如果您使用的软件包依赖于Flatter_svg,但由于使用较旧的版本,仍然会出现错误,则可以通过以下方式修复:
dependency_overrides:
flutter_svg: ^0.19.3
我浪费了很多时间,因为标志:^3.2.2
包使用了flatter\u svg:^0.19.1
,它导致了相同的错误。尝试了所有方法,但都没有成功
最后,更新依赖项对我来说很有效
这是我在pubspec.yaml文件中更新的内容:
除去
flutter_svg: ^0.18.0
并补充说
flutter_svg: ^0.20.0-nullsafety.3
然后,我跑了
flutter pub get
你在哪个颤振频道工作?我使用主频道谢谢,@prahack在CodeMagic Pipeline上面对这个问题已经有一周了。
flutter pub get