Flutter版Jellyfin客户端Jellyflut本地运行依赖包问题求助
我从GitHub克隆了Flutter开源项目Jellyflut,Jellyfin是一款由志愿者开发的媒体管理方案,可从自有服务器无限制地将媒体流式传输至任意设备。但在本地运行该项目时,遇到了依赖包相关问题,已尝试执行flutter pub upgrade和flutter pub upgrade --major-versions命令,但均无法解决问题。以下是项目的pubspec.yaml文件内容:
name: jellyflut description: Jellyfin client made with Flutter. publish_to: "none" # Remove this line if you wish to publish to pub.dev version: 2.0.0 environment: sdk: ">=2.17.0 <3.0.0" module: androidX: true dependencies: animated_fractionally_sized_box: ^2.0.1 animations: ^2.0.7 archive: ^3.3.6 audio_video_progress_bar: ^1.0.0 authentication_repository: path: packages/authentication_repository auto_route: ^8.1.3 blurhash_dart: ^1.2.1 cached_network_image: ^3.2.3 carousel_slider: ^4.2.1 community_material_icon: ^5.9.55 cupertino_icons: ^1.0.5 database_downloads_api: path: packages/database_downloads_api device_info_plus: ^8.1.0 dio: ^4.0.6 downloads_api: path: packages/downloads_api downloads_repository: path: packages/downloads_repository drop_shadow: ^0.1.0 easy_localization: ^3.0.1 easy_localization_loader: ^1.0.1+1 equatable: ^2.0.5 file_picker: ^5.2.5 flutter: sdk: flutter flutter_bloc: ^8.1.1 flutter_colorpicker: ^1.0.3 flutter_native_splash: ^2.2.17 flutter_settings_ui: ^3.0.1 flutter_svg: ^2.0.0+1 fluttertoast: ^8.1.2 hydrated_bloc: ^9.0.0 intl: ^0.18.0 items_api: path: packages/items_api items_repository: path: packages/items_repository jellyfin_authentication_api: path: packages/jellyfin_authentication_api jellyfin_downloads_api: path: packages/jellyfin_downloads_api jellyflut_models: path: packages/jellyflut_models json_serializable: ^6.5.4 just_audio: ^0.9.30 live_tv_api: path: packages/live_tv_api live_tv_repository: path: packages/live_tv_repository music_player_api: path: packages/music_player_api music_player_repository: path: packages/music_player_repository octo_image: ^2.0.0 package_info_plus: ^3.0.2 palette_generator: ^0.3.3+2 path: ^1.8.2 path_provider: ^2.0.12 permission_handler: ^10.2.0 photo_view: ^0.15.0 provider: ^6.0.5 reactive_forms: ^17.0.0 remote_downloads_api: path: packages/remote_downloads_api responsive_builder: ^0.7.0 rxdart: ^0.27.7 settings_repository: path: packages/settings_repository shared_preferences: ^2.0.17 shimmer: ^3.0.0 shu_epub: git: url: https://github.com/getBoolean/shu_epub.git ref: main sliver_tools: ^0.2.9 sqlite3_flutter_libs: ^0.5.12 sqlite_database: path: packages/sqlite_database streaming_api: path: packages/streaming_api streaming_repository: path: packages/streaming_repository subtitle: ^0.1.0-beta.3 universal_io: ^2.0.4 url_launcher: ^6.1.8 users_api: path: packages/users_api users_repository: path: packages/users_repository uuid: ^4.4.0 wakelock: ^0.6.2 dependency_overrides: audio_video_progress_bar: ^1.0.0 image: ^4.0.13 intl: ^0.18.0 analyzer: ^5.2.0 ffi: ^2.0.1 universal_html: git: url: https://github.com/juancastillo0/universal_html.git ref: 5a079ea dev_dependencies: auto_route_generator: ^8.0.0 build_runner: ^2.3.2 build_web_compilers: ^4.0.10 dart_code_metrics: ^5.6.0 flutter_lints: ^3.0.2 flutter_test: sdk: flutter icons_launcher: ^2.0.5 # The following section is specific to Flutter. flutter: assets: - img/ - img/icon/ - translations/ fonts: - family: Poppins fonts: - asset: fonts/Poppins-Italic.ttf style: italic - asset: fonts/Poppins-Regular.ttf style: normal - family: HindMadurai fonts: - asset: fonts/HindMadurai-Regular.ttf style: normal - family: Quicksand fonts: - asset: fonts/Quicksand-Regular.ttf style: normal # The following line ensures that the Material Icons font is # included with your application, so that you can use the icons in # the material Icons class. uses-material-design: true
解决方案
匹配Flutter SDK版本
项目明确要求SDK版本在>=2.17.0 <3.0.0范围内,执行flutter --version确认本地版本,若不符合,用flutter downgrade切换到该区间的稳定版(比如2.19.6),或通过Flutter SDK管理器选择对应版本。彻底清理依赖缓存
依次执行以下命令清理残留的依赖文件:flutter clean rm -rf .dart_tool # Windows系统替换为 rd /s /q .dart_tool rm pubspec.lock # Windows系统替换为 del pubspec.lock重新获取依赖
执行flutter pub get,不要直接用upgrade——项目包含大量本地子包(如packages/authentication_repository),upgrade可能破坏子包与主项目的版本兼容。确保子模块完整
克隆项目时可能未拉取全部子模块,执行git submodule update --init --recursive下载所有本地子包,避免因缺失本地依赖导致错误。处理Git依赖问题
项目中的shu_epub和universal_html依赖Git仓库,若网络拉取失败,可尝试替换为pub.dev上的稳定版本(若存在),比如查看pub.dev中shu_epub的最新兼容版本,修改pubspec.yaml中的对应配置。修复依赖冲突
若仍有冲突,查看错误日志中的具体冲突包,在dependency_overrides中添加对应包的版本锁定,补充冲突包的版本约束。
内容的提问来源于stack exchange,提问作者Abdoulaye

