热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【Flutter问题系列第57篇】Context:Foundthiscandidate,buttheargumentsdon‘tmatch.constMaterialApp

这是【Flutter问题系列第57篇】,如果觉得有用的话,欢迎关注专栏。当前开发环境Flutter版本:2.2.3,Dar

这是【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 博客中,希望自己学习的同时,也可以帮助更多的人。

推荐阅读
  • 本文介绍了在Android开发中使用软引用和弱引用的应用。如果一个对象只具有软引用,那么只有在内存不够的情况下才会被回收,可以用来实现内存敏感的高速缓存;而如果一个对象只具有弱引用,不管内存是否足够,都会被垃圾回收器回收。软引用和弱引用还可以与引用队列联合使用,当被引用的对象被回收时,会将引用加入到关联的引用队列中。软引用和弱引用的根本区别在于生命周期的长短,弱引用的对象可能随时被回收,而软引用的对象只有在内存不够时才会被回收。 ... [详细]
  • 本文介绍了如何使用PHP向系统日历中添加事件的方法,通过使用PHP技术可以实现自动添加事件的功能,从而实现全局通知系统和迅速记录工具的自动化。同时还提到了系统exchange自带的日历具有同步感的特点,以及使用web技术实现自动添加事件的优势。 ... [详细]
  • vue使用
    关键词: ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • Android开发实现的计时器功能示例
    本文分享了Android开发实现的计时器功能示例,包括效果图、布局和按钮的使用。通过使用Chronometer控件,可以实现计时器功能。该示例适用于Android平台,供开发者参考。 ... [详细]
  • 怎么在PHP项目中实现一个HTTP断点续传功能发布时间:2021-01-1916:26:06来源:亿速云阅读:96作者:Le ... [详细]
  • 全面介绍Windows内存管理机制及C++内存分配实例(四):内存映射文件
    本文旨在全面介绍Windows内存管理机制及C++内存分配实例中的内存映射文件。通过对内存映射文件的使用场合和与虚拟内存的区别进行解析,帮助读者更好地理解操作系统的内存管理机制。同时,本文还提供了相关章节的链接,方便读者深入学习Windows内存管理及C++内存分配实例的其他内容。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了在CentOS 6.4系统中更新源地址的方法,包括备份现有源文件、下载163源、修改文件名、更新列表和系统,并提供了相应的命令。 ... [详细]
  • 本文介绍了在Ubuntu下制作deb安装包及离线安装包的方法,通过备份/var/cache/apt/archives文件夹中的安装包,并建立包列表及依赖信息文件,添加本地源,更新源列表,可以在没有网络的情况下更新系统。同时提供了命令示例和资源下载链接。 ... [详细]
  • Todayatworksomeonetriedtoconvincemethat:今天在工作中有人试图说服我:{$obj->getTableInfo()}isfine ... [详细]
author-avatar
yuguiping123
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有