Flutter在模拟器运行时因源代码错误编译失败
解决Flutter编译错误:不存在名为'keyboardDismissBehavior'的命名参数
我之前也碰到过一模一样的问题,折腾了好半天终于找到根源——这是**pull_to_refresh插件1.6.4版本和你当前的Flutter版本不兼容**导致的。插件代码里尝试给CustomScrollView传入keyboardDismissBehavior这个参数,但你的Flutter版本里的CustomScrollView构造函数还不支持这个参数,所以编译直接报错了。
给你三个可行的解决方案,按推荐程度排序:
方案一:升级Flutter到兼容版本
如果你的Flutter版本比较旧,直接升级到支持keyboardDismissBehavior的版本(比如Flutter 1.20及以上)就能解决:
- 打开终端执行升级命令:
flutter upgrade - 升级完成后,进入项目目录重新拉取依赖:
flutter pub get - 最后重新运行项目即可。
方案二:降级pull_to_refresh插件
要是不想升级Flutter,就把插件降级到一个和你当前Flutter版本匹配的旧版本,比如1.5.8版本(这个版本还没用到keyboardDismissBehavior参数):
- 打开项目根目录的
pubspec.yaml文件,找到pull_to_refresh的依赖行,修改成:dependencies: pull_to_refresh: ^1.5.8 - 执行命令更新依赖:
flutter pub get - 清理一下项目缓存再运行:
flutter clean flutter run
方案三:手动修改插件代码(不推荐)
如果临时想快速解决,也可以直接修改插件的源代码,但注意后续执行flutter pub get时会被覆盖,所以只是临时方案:
- 找到错误提示的文件:
C:/src/flutter/flutter/.pub-cache/hosted/pub.dartlang.org/pull_to_refresh-1.6.4/lib/src/smart_refresher.dart - 删除第434行的
keyboardDismissBehavior:相关代码块 - 重新编译项目
之前你做的pub get、pub upgrade、重装插件这些操作没起效,是因为没触及核心的版本兼容问题,试试上面的方案应该就能搞定了。
内容的提问来源于stack exchange,提问作者Cioloca Rares
相关产品推荐
相关产品推荐

