持续创作,加速成长!这是我参与「日新计划 6 月更文挑战」的第14天,点击查看活动详情
这是【Flutter 问题系列第 66 篇】,如果觉得有用的话,欢迎关注专栏。
注:
因部分人不仅想知道问题如何解决,也想知道解决问题的过程,所以第一步的 问题描述
我写的比较详细,如果你的问题和我描述的相差不多,那应该就能解决。
也有朋友只想知道如何解决问题,那就请直接看第二步的 解决方案
。
一:问题描述
公司项目用的 Flutter SDK 版本是 2.2.3,内置的 Dart SDK 的版本是 2.13.4。
前几天调研 ios iap 内购支付时用到了一个插件 in_app_purchase
,该插件所依赖的另外一个插件 in_app_purchase_storekit
要求 Dart SDK 最小版本是 2.14,然后我下载了最新的 Flutter SDK 3.0.1,内置的 Dart SDK 的版本是 2.17。
此时我本地存在两个 Flutter SDK 版本,一个是 2.2.3,一个是 3.0.1。
今天打开公司项目时,提示我自定义的安卓日历有一处错误,如下图所示
提示我 The named parameter 'autovalidate' isn't defined
,意思是没有定义的命名参数 autovalidate 。
之前一直都好好的,为什么“突然”就出错了呢。
然后我跳到这个 Form 类文件所在的路径,发现该类指向的是 Flutter SDK 3.0.1 版本,但是打开项目的 Flutter SDK path 配置,还是旧的 Flutter SDK 2.2.3 版本啊,如下图所示
这就丈二和尚摸不着头脑了,然后尝试了几个不同的方法,如下
- 执行 flutter clean 命令。
- 删除 pubspec.lock 文件。
- 删除 Flutter SDK 中 bin / cache / flutter_tools.stamp 文件。
- 删除 Flutter SDK 中 bin / cache 文件夹。
遗憾的是上面几个方式对我来说并没什么作用,不过好在皇天不负有心人,最后问题解决了。
二:解决方案
找到你项目的 .packages
文件,如下图所示
直接删除它,此时项目报错的地方还会在,然后关键地方要来了,不要眨眼。
直接点击运行按钮,重新跑一次项目,也许你会问报错还在怎么运行起来啊?
我开始也是这样想的,甚至都没这样去试一下,不过在项目重新运行构建的过程中,错误会自动解决,亲身体会,包你少走弯路。
ps:由上图可以看到我当前项目中引用的的确是 Flutter SDK 3.0.1 版本(万恶之源,哈哈)。
你的问题得到解决了吗?欢迎在评论区留言。
赠人玫瑰,手有余香,如果觉得文章不错,希望可以给个一键三连,感谢。
结束语
Google 的 Flutter 越来越火,截止 2022年6月9日 GitHub 标星已达 142K,Flutter 毅然是一种趋势,所以作为前端开发者,没有理由不趁早去学习。
无论你是 Flutter 新手还是已经入门了,不妨先点个关注,后续我会将 Flutter 中的常用组件(含有源码分析、组件的用法及注意事项)以及可能遇到的问题写到稀土博客中,希望自己学习的同时,也可以帮助更多的人。