You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dart 3.0.3环境下启用空安全遇版本兼容问题求助

问题描述
  • 使用Dart 3.0.3运行Flutter应用时触发错误:

    Error: The lower bound of "sdk: '>=2.7.0 <3.0.0'" must be 2.12.0' or higher to enable null safety

  • 已在pubspec.yaml中设置sdk: ">=2.12.0",但问题未解决
  • 执行空安全迁移命令时(注:用户原命令参数有误,应为--mode而非--node),因logger_flutter >=0.7.0不支持空安全导致版本解析失败
  • 尝试降级Dart到2.19.0时出现错误;执行dart fix --dry-run和dart fix --apply后运行应用仍报错

附用户pubspec.yaml配置:

version: 1.15.1+1

environment:
  sdk: ">=2.12.0"

dependencies:
  flutter:
    sdk: flutter
  flutter_bloc: ^7.3.1
  equatable:

  # Http
  dio: ^4.0.0
  pretty_dio_logger: ^1.1.1
  jwt_decoder: ^2.0.0

  # Database
  floor: ^1.4.1
  uuid: ^3.0.2
  localstorage: ^4.0.0+1


  # UI
  avatar_glow: ^2.0.1
  flutter_launcher_icons: ^0.9.0
  image_picker: ^0.8.0
  transparent_image: ^2.0.0
  flutter_svg: ^0.22.0
  lottie: ^1.1.0
  fluttertoast: ^8.0.9

  # Logger
  logger: ^0.7.0+2
  logger_flutter: ^0.7.1

  get: ^4.6.5
  permission_handler: ^8.0.0+2
  audioplayers: ^0.20.0
  rxdart: ^0.26.0
  ota_update: ^4.0.2
  package_info_plus: ^1.4.3
  cached_network_image: ^3.2.3



dev_dependencies:
  flutter_test:
    sdk: flutter
  bloc_test: ^8.0.0
  mockito: ^5.3.2
  floor_generator: ^1.2.0
  build_runner: ^2.1.11

flutter_icons:
  android: true
  ios: true
  image_path: "assets/png/icon_dit_jade.png"

flutter:

  uses-material-design: true

  assets:
    - assets/
    - assets/animated/
    - assets/png/

  fonts:
    - family: OpenSans
      fonts:
        - asset: assets/fonts/OpenSans-Light.ttf
        - asset: assets/fonts/OpenSans-SemiBold.ttf
          weight: 600
    - family: Ubuntu
      fonts:
        - asset: assets/fonts/Ubuntu-Regular.ttf
          style: normal
        - asset: assets/fonts/Ubuntu-Italic.ttf
          style: italic
解决方案

1. 替换不支持空安全的核心依赖

logger_flutter已停止维护,且无空安全版本,这是空安全迁移失败的核心原因:

  • 从pubspec.yaml的dependencies中移除logger_flutter: ^0.7.1
  • 若需要日志UI功能,可替换为支持空安全的替代包,或直接使用logger包的控制台输出满足需求

2. 修正SDK约束并升级所有依赖

  • 修改environment中的SDK约束,适配Dart 3.0.3:
    environment:
      sdk: ">=3.0.0 <4.0.0"
    
  • 执行dart pub outdated --mode=null-safety查看可升级的空安全版本包,手动更新pubspec.yaml中的版本号,或执行dart pub upgrade --null-safety自动升级

3. 重置依赖并重新安装

  • 删除项目根目录下的pubspec.lock文件和.dart_tool文件夹
  • 执行flutter pub get重新拉取依赖

4. 处理Dart降级失败问题(可选)

若坚持使用Dart 2.19.x,需同步降级Flutter版本(Flutter与Dart版本强绑定):

  • 执行flutter downgrade 3.7.12(此版本对应Dart 2.19.6)
  • 降级完成后执行flutter pub get

5. 手动修复剩余空安全错误

执行dart fix --apply后仍有错误的话,需手动检查代码:

  • 标记可能为null的类型(添加?)
  • 确保非空变量已初始化,或使用!断言(仅确定变量非空时使用)
  • 处理null值的分支逻辑(如if (variable != null))

内容的提问来源于stack exchange,提问作者cresentlove222

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 13:07:37