flutter_session 0.1.1依赖冲突致pub get失败,请求技术帮助
解决flutter_session 0.1.1与file_picker 5.2.2的依赖冲突问题
问题本质
这是典型的依赖链版本冲突:
- flutter_session 0.1.1依赖
shared_preferences ^0.5.8,最终要求plugin_platform_interface ^1.0.1 - file_picker 5.2.2依赖
plugin_platform_interface ^2.1.2
两者对plugin_platform_interface的版本要求完全不兼容,导致pub get解析失败。
解决方案
方案1:替换flutter_session为官方维护的包
flutter_session本质是基于shared_preferences做的简单封装,直接用shared_preferences可实现相同的session存储功能,且无版本兼容问题:
- 在
pubspec.yaml中移除flutter_session: ^0.1.1,添加:
shared_preferences: ^2.2.2
- 替换原flutter_session的代码:
原调用:
import 'package:flutter_session/flutter_session.dart'; // 存储数据 await FlutterSession().set('user_token', 'xxx'); // 获取数据 var token = await FlutterSession().get('user_token');
替换为shared_preferences实现:
import 'package:shared_preferences/shared_preferences.dart'; // 存储数据 final prefs = await SharedPreferences.getInstance(); await prefs.setString('user_token', 'xxx'); // 获取数据 var token = prefs.getString('user_token');
方案2:降低file_picker版本到兼容旧版plugin_platform_interface的版本
选择file_picker中依赖plugin_platform_interface ^1.0.1的版本,比如file_picker: ^3.0.4,修改pubspec.yaml:
file_picker: ^3.0.4
该版本功能完整,可与flutter_session 0.1.1正常兼容。
方案3:使用dependency_overrides强制统一版本(不推荐)
若必须保留两个包的当前版本,可尝试强制指定plugin_platform_interface版本,但可能导致file_picker运行时出错(新版本file_picker依赖了2.x版本的接口):
在pubspec.yaml末尾添加:
dependency_overrides: plugin_platform_interface: ^1.0.1
执行flutter pub get后需全面测试file_picker功能,确认无异常。
内容的提问来源于stack exchange,提问作者Lim
相关产品推荐
相关产品推荐

