Flutter Web部署Firebase后shared_preferences报MissingPluginException错误
问题原因
Flutter Web的Release构建默认开启Tree Shaking优化,可能误将shared_preferences的Web平台实现代码移除,导致部署后出现插件实现找不到的错误。
解决方案
1. 确认依赖配置
检查pubspec.yaml中shared_preferences的版本(需支持Web平台),执行以下命令确保依赖安装完整:
flutter pub get
2. 强制保留插件代码
在web/index.html的<head>标签内添加脚本,阻止Tree Shaking移除shared_preferences的Web实现:
<script> if (typeof dartLoader !== 'undefined') { dartLoader.options.dartLibrariesToKeep = [ 'package:shared_preferences/shared_preferences.dart', 'package:shared_preferences_web/shared_preferences_web.dart' ]; } </script>
3. 关闭Tree Shaking构建
使用以下命令构建Web版本,直接关闭Tree Shaking优化:
flutter build web --release --dart-define=FLUTTER_WEB_TREE_SHAKE=false
4. 提前初始化插件
在main.dart的main函数中提前初始化shared_preferences,确保插件完成注册:
void main() async { WidgetsFlutterBinding.ensureInitialized(); // 提前初始化SharedPreferences await SharedPreferences.getInstance(); runApp(const MyApp()); }
5. 清理缓存重新部署
清理Flutter构建缓存和Firebase部署缓存,再重新构建部署:
flutter clean flutter build web firebase deploy
内容的提问来源于stack exchange,提问作者Xaphann
相关产品推荐
相关产品推荐

