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

Flutter项目中MobX .g文件无法生成问题求助

Flutter执行flutter pub run build_runner build生成MobX文件时出现Can't have modifier 'final' here错误的解决方法

问题描述

在Flutter项目中执行flutter pub run build_runner build命令生成MobX的.g文件时,持续出现语法解析错误,尝试调整包版本、添加analyzer依赖覆盖等方案均未解决。

报错信息

Bad state: Unexpected diagnostics:
/Users/macbook/Documents/flutter/bin/cache/dart-sdk/lib/internal/internal.dart:89:1 - Can't have modifier 'final' here.
[SEVERE] json_serializable:json_serializable on lib/store/backend/lesson_flow/interaction_switcher_store.dart:

Bad state: Unexpected diagnostics:
/Users/macbook/Documents/flutter/bin/cache/dart-sdk/lib/internal/internal.dart:89:1 - Can't have modifier 'final' here.
[SEVERE] json_serializable:json_serializable on lib/store/progress_bar_play_status.dart:

Bad state: Unexpected diagnostics:
/Users/macbook/Documents/flutter/bin/cache/dart-sdk/lib/internal/internal.dart:89:1 - Can't have modifier 'final' here.
[SEVERE] json_serializable:json_serializable on lib/store/login_store.dart:

Bad state: Unexpected diagnostics:
/Users/macbook/Documents/flutter/bin/cache/dart-sdk/lib/internal/internal.dart:89:1 - Can't have modifier 'final' here.
[SEVERE] json_serializable:json_serializable on lib/store/backend_store.dart:

Bad state: Unexpected diagnostics:
/Users/macbook/Documents/flutter/bin/cache/dart-sdk/lib/internal/internal.dart:89:1 - Can't have modifier 'final' here.
[SEVERE] mobx_codegen:mobx_generator on lib/course/course.dart:

Bad state: Unexpected diagnostics:
/Users/macbook/Documents/flutter/bin/cache/dart-sdk/lib/internal/internal.dart:89:1 - Can't have modifier 'final' here.
[SEVERE] mobx_codegen:mobx_generator on lib/firebase_options.dart:

Bad state: Unexpected diagnostics:
/Users/macbook/Documents/flutter/bin/cache/dart-sdk/lib/internal/internal.dart:89:1 - Can't have modifier 'final' here.
[SEVERE] mobx_codegen:mobx_generator on lib/repositories/topbar_state_repositories.dart:

Bad state: Unexpected diagnostics:
/Users/macbook/Documents/flutter/bin/cache/dart-sdk/lib/internal/internal.dart:89:1 - Can't have modifier 'final' here.
[SEVERE] mobx_codegen:mobx_generator on lib/repositories/completed_lessons_repository.dart:

Bad state: Unexpected diagnostics:
/Users/macbook/Documents/flutter/bin/cache/dart-sdk/lib/internal/internal.dart:89:1 - Can't have modifier 'final' here.
[SEVERE] mobx_codegen:mobx_generator on lib/models/lesson_pop_and_show_container_media.dart:

Bad state: Unexpected diagnostics:
/Users/macbook/Documents/flutter/bin/cache/dart-sdk/lib/internal/internal.dart:89:1 - Can't have modifier 'final' here.
[SEVERE] mobx_codegen:mobx_generator on lib/models/index.dart:

Bad state: Unexpected diagnostics:
/Users/macbook/Documents/flutter/bin/cache/dart-sdk/lib/internal/internal.dart:89:1 - Can't have modifier 'final' here.
[SEVERE] mobx_codegen:mobx_generator on lib/models/lesson_video_subtitle.dart:

Bad state: Unexpected diagnostics:
/Users/macbook/Documents/flutter/bin/cache/dart-sdk/lib/internal/internal.dart:89:1 - Can't have modifier 'final' here.
[SEVERE] mobx_codegen:mobx_generator on lib/models/lesson_interaction_button_config.dart:

Bad state: Unexpected diagnostics:
/Users/macbook/Documents/flutter/bin/cache/dart-sdk/lib/internal/internal.dart:89:1 - Can't have modifier 'final' here.
[SEVERE] mobx_codegen:mobx_generator on lib/models/lesson_segment.dart:

当前pubspec.yaml配置

environment:
  sdk: ">=2.12.0 <3.0.0"

dependencies:
  flutter:
    sdk: flutter
  flutter_svg: ^0.22.0
  video_player: ^2.1.12
  # The following adds the Cupertino Icons font to your application.
  # Use with the CupertinoIcons class for iOS style icons.
  cupertino_icons: ^1.0.3
  percent_indicator: ^3.0.1
  cached_network_image: ^3.1.0
  flutter_mobx: ^2.0.2
  animated_text_kit: ^4.2.1
  carousel_slider: ^4.0.0
  smooth_page_indicator:
    git:
      url: https://github.com/rzakirov/smooth_page_indicator.git
      ref: baba9840312a78b9f3c60320920169aec00cb10d
  darq: ^1.1.1
  flutter_markdown: ^0.6.4
  rounded_loading_button: ^2.0.5
  lottie: ^1.2.2
  
  json_serializable: ^4.1.4
  quiver: ^3.0.1
  retry: ^3.1.0
  collection:
  get: ^4.3.8

  mask_text_input_formatter: ^2.0.0
  store_redirect: ^2.0.0
  shared_preferences: 2.0.7   
  pinch_zoom: ^1.0.0
  url_launcher: ^6.0.10
  flutter_screenutil: ^5.0.1

  path_provider: ^2.0.8
  firebase_remote_config: ^3.0.4
  flutter_isolate: ^2.0.0



  firebase_storage: 11.0.3
  firebase_crashlytics: ^3.0.4
  firebase_analytics: ^10.0.4
  firebase_app_check: ^0.1.1+3
  firebase_core: ^2.17.0
  cloud_firestore: ^4.9.3
  firebase_auth: ^4.10.1



dependency_overrides:
  plugin_platform_interface: ^2.1.8

dev_dependencies:
  flutter_test:
    sdk: flutter
  flutter_launcher_icons: ^0.9.1
  
  lint: ^1.0.0
  mobx_codegen: ^2.0.2
  build_runner: ^2.1.11

已尝试的方案

  • 调整相关依赖包的版本
  • 在dependency_overrides中添加analyzer依赖

解决方法

1. 统一SDK与依赖版本兼容性

修改pubspec.yaml中的环境和依赖版本,确保所有包与Dart SDK版本匹配:

  • 更新environment的SDK范围:
    environment:
      sdk: ">=2.18.0 <3.0.0"
    
  • 更新MobX相关依赖:
    dependencies:
      flutter_mobx: ^2.2.0
    dev_dependencies:
      mobx_codegen: ^2.2.0
    
  • 更新代码生成相关依赖:
    dependencies:
      json_serializable: ^6.7.0
    dev_dependencies:
      build_runner: ^2.4.6
    

2. 添加兼容的analyzer版本覆盖

在dependency_overrides中添加指定版本的analyzer,解决语法解析冲突:

dependency_overrides:
  plugin_platform_interface: ^2.1.8
  analyzer: ^5.13.0

3. 清理缓存并重新执行命令

依次执行以下命令:

flutter pub cache clean
flutter pub get
flutter pub run build_runner build --delete-conflicting-outputs

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 11:22:12