Flutter使用sqflite数据库时提示库为legacy不支持空安全警告怎么办?
问题原因
该警告的触发有两类常见原因:
- 项目依赖的
sqflite版本过低,未适配空安全规范,无法兼容空安全项目的运行要求 - 若使用的
sqflite版本≥2.0.0,是因为原有导入路径package:sqflite/sqflite.dart被标记为 legacy 兼容路径,仅用于适配未迁移空安全的历史项目,空安全项目导入该路径就会触发对应提醒。
解决步骤
- 首先升级
sqflite到官方最新稳定版,打开项目根目录的pubspec.yaml文件,更新sqflite的依赖版本声明,完成后执行flutter pub get拉取新依赖。 - 替换项目中所有旧导入语句:
- 仅做Android/iOS移动端开发的项目,升级到3.x以上版本的
sqflite后,继续使用import 'package:sqflite/sqflite.dart'导入就会自动消除该警告 - 需要适配Windows/macOS/Linux桌面端的项目,替换为
import 'package:sqflite_common_ffi/sqflite_ffi.dart'即可
- 仅做Android/iOS移动端开发的项目,升级到3.x以上版本的
- 若因业务兼容要求暂时无法升级依赖,可在对应导入语句上方添加
// ignore: import_of_legacy_library_into_null_safe临时屏蔽警告,该方案仅可作为过渡使用,不推荐长期保留。
注意事项
- 未适配空安全的旧版本
sqflite可能在运行时出现空指针异常、数据丢失等不可预期问题,不建议长期在空安全项目中使用 - 依赖升级完成后建议全量测试所有数据库相关的业务逻辑,避免API变更导致的功能异常
内容的提问来源于stack exchange,提问作者Sheheen
相关产品推荐
相关产品推荐

