• 售前

  • 售后

热门帖子
入门百科

【Flutter 问题系列第 57 篇】Context: Found this candidate, but the arg

[复制链接]
简单350 显示全部楼层 发表于 2022-1-15 11:49:31 |阅读模式 打印 上一主题 下一主题
这是【Flutter 问题系列第 57 篇】,如果觉得有用的话,欢迎关注专栏。
当前开发环境
Flutter 版本:2.2.3,Dart 版本:2.13.4,操作系统:macOS BigSur 11.4 M1,Android Studio 版本:Arctic Fox 2020.3.1 Pathc 4。
今天碰到的这个问题算是打破了我以往的认知,特此记录下。

文章目录



一:问题描述

新建了一个 Flutter 项目 A,然后复制了本地另外一个项目 B 的 pubspec.yaml 文件到 A 项目,以为 B 项目都能正常的运行,A 项目自然而然的没问题,然后就报出了如下问题

关键词一是 flutter/.pub-cache/hosted/pub.flutter-io.cn/get-4.6.1 插件中的 get_cupertino_app.dart 文件报错,
报错原因是No named parameter with the name 'useInheritedMediaQuery,翻译后的意思是 没有名称为useInheritedMediaQuery 的命名参数。
关键词二是 flutter/packages/flutter/lib/src/cupertino/app.dart 文件报错,
报错原因是 Context: Found this candidate, but the arguments don't match. const MaterialApp,翻译后的意思是 上下文:找到了候选对象 const MaterialApp,但参数不匹配。
还有另外一个错误如下图所示

关键代码是 flutter/packages/flutter_tools/gradle/flutter.gradle' line: 1035,报错位置在 Flutter SDK,刚开始以该错误为关键字搜索解决方案了,然后浪费了好几个小时,这里提前提个醒。
之所以把错误原因写的这么详细,是因为如果你此时的问题和我的报错内容不一样,那就不用向下看了,我在搜索解决方案时看到了很多以为能解决的,也一个个尝试了,但没一个能解决的,着实耽误了很多时间。
如果你的报错信息和我的一样,那么请退后,因为我要开始…了。
二:问题分析

因为实在找不来解决方案,想着去 get 库的 Issues 看看有没有人遇到和我一样的问题,果然,被我找到了 Issues

因为我本地的 Flutter 版本是 2.2.3,方案一应该是可行的,但代价有点高,所以尝试了下面的解决方案。
三:方案一(不推荐)

根据错误原因一的提示,跳转到相应的代码处,如下图所示

只修改属于 get 插件的错误的代码,报 Flutter SDK 错误的先不用管,我把属于 get 插件错误的修改完后重新运行,此时没有问题,可以正常运行。
虽然这个方案可以解决,但毕竟修改了 get 插件的源码,所以并不是最理想的解决方案,接着就是下面推荐的方案二了,也是从根本上解决了这个问题。
四:方案二(推荐)

通过错误原因二,可以知道当前报错位置是插件 get-4.6.1 ,但我本地的 pubspec.yaml 文件指定的是 get 插件的 4.3.8 版本啊,如下图所示

查看 get 最新的版本,截至到 2022年01月13日 ,也是 get-4.6.1 版本,这肯定不是巧合。
关键是这个脱字符号 ^,我以前以为这是插件的规定写法,其实不是,它的含义是 自动使用当前插件的最新版本。
因为 B 项目是几个月前的,当时 get 插件最新版本是 4.3.8,所以 B 项目没问题。
我出错的是 get 插件,用插件的 GetMaterialApp 组件代替了 Flutter 原生的 MaterialApp,Flutter 版本低,但 get 版本太高了造成了这个问题。
所以,我们把脱字符号 ^ 去掉,指定项目中用的就是 get 插件 4.3.8 版本,如下图所示

如果你修改后执行 flutter pub get 命令后,发现插件没有更新,这是因为插件缓存的原因,在访达中找到 get-4.6.1 文件夹,手动删除然后重新获取依赖即可。
其实从头到尾就是去掉一个脱字符号 ^ 的事情,但这是解决了才这样说,这个解决问题的过程特此记录下,希望可以帮到你。
至此,关于在 Flutter 中运行项目提示 Context: Found this candidate, but the arguments don’t match. const MaterialApp 的解决方案便介绍到这里。
你的问题得到解决了吗?欢迎在评论区留言。
赠人玫瑰,手有余香,如果觉得文章不错,希望可以给个一键三连,感谢。

        结束语     

  Google 的 Flutter 越来越火,截止 2022年1月13日 GitHub 标星已达 134K,Flutter 毅然是一种趋势,所以作为前端开发者,没有理由不趁早去学习。  

  无论你是 Flutter 新手还是已经入门了,不妨先点个关注,后续我会将 Flutter 中的常用组件(含有源码分析、组件的用法及注意事项)以及可能遇到的问题写到 CSDN 博客中,希望自己学习的同时,也可以帮助更多的人。
来源:https://blog.caogenba.net/qq_42351033/article/details/122484216
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作