Flutter集成测试报scroll_to_index空感知操作符警告如何解决
Flutter集成测试触发scroll_to_index空感知操作警告解决方案
问题表现
为Flutter应用实现集成测试功能时,即使编写的测试逻辑非常简单直接,仍会触发如下报错:
ERROR: ../../../snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/scroll_to_index-2.1.1/lib/scroll_to_index.dart:358:57: Warning: Operand of null-aware operation '!' has type 'SchedulerBinding' which excludes null.
该警告来自scroll_to_index 2.1.1依赖包,触发原因是当前使用的Flutter版本中SchedulerBinding类型已默认做非空约束,包内代码对已经排除空值的类型额外使用了空断言操作符!,在严格编译模式下该警告会直接阻断测试流程。
解决方案
- 优先方案:升级依赖版本
该空安全兼容问题已经在scroll_to_index的后续正式版本中修复,直接将依赖升级到3.0.1及以上版本即可解决,在项目根目录执行如下命令更新依赖:
依赖更新完成后重新运行集成测试,警告会自动消除。flutter pub upgrade scroll_to_index - 兼容方案:依赖覆盖指定版本
如果项目存在其他依赖关联限制,无法直接升级scroll_to_index版本,可以通过依赖覆盖的方式强制使用修复后的版本,无需改动原有依赖配置:
打开项目根目录下的pubspec.yaml文件,在文件末尾添加如下配置:
保存后执行dependency_overrides: scroll_to_index: ^3.0.1flutter pub get拉取对应版本依赖即可。 - 应急方案:本地修改缓存源码
如果存在版本锁死无法调整的特殊情况,可以直接修改本地Pub缓存中的对应源码临时解决:- 根据报错提示的路径打开
scroll_to_index.dart文件 - 定位到第358行,删除代码中
SchedulerBinding后多余的!空断言操作符,保存文件即可
注意:该方法修改的是本地缓存文件,执行
flutter pub cache repair、切换开发设备重新拉取依赖时修改会失效,仅适合临时跑通测试场景使用。 - 根据报错提示的路径打开
内容的提问来源于stack exchange,提问作者Nik
相关产品推荐
相关产品推荐

