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
相关产品推荐
相关产品推荐

