Flutter_bloc执行flutter pub upgrade后出现MultiProvider构造器报错
解决Flutter_bloc升级后"Superclass has no constructor named 'MultiProvider'"错误
问题原因
这是flutter_bloc 9.1.0和当前环境中provider包版本不兼容导致的:flutter_bloc 9.x系列依赖provider >=6.0.0 <7.0.0,执行flutter pub upgrade后,provider可能被升级到了7.x版本,新版本里MultiProvider的构造逻辑发生变化,导致flutter_bloc的代码调用失效。
解决方法
方法一:锁定provider兼容版本
在项目的pubspec.yaml中明确指定provider为6.x兼容版本:
dependencies: flutter: sdk: flutter flutter_bloc: ^9.1.0 provider: ^6.0.5 # 锁定到兼容flutter_bloc 9.x的版本
执行命令更新依赖:
flutter pub get
方法二:升级flutter_bloc到适配provider 7.x的版本
直接将flutter_bloc升级到最新稳定版(如10.x系列),新版本已适配provider 7.x的API变化:
dependencies: flutter: sdk: flutter flutter_bloc: ^10.1.0 # 升级到适配provider 7.x的版本
同样执行flutter pub get更新依赖。
方法三:彻底清理缓存后重新获取
如果前两种方法无效,尝试清理pub缓存再重新拉取依赖:
flutter pub cache clean flutter pub get
报错信息回顾
: Superclass has no constructor named 'MultiProvider'. }) : super(key : key, providers : listeners, child : child); ^^^^^ pub-cache/hosted/pub.dev/flutter_bloc-9.1.0/lib/src/multi_bloc_provider.dart:57:8: Error : Superclass has no constructor named 'MultiProvider'. }) : super(key : key, providers : providers, child : child); ^^^^^ pub-cache/hosted/pub.dev/flutter_bloc-9.1.0/lib/src/multi_repository_provider.dart:51:8: Error : Superclass has no constructor named 'MultiProvider'. }) : super(key : key, providers : providers, child : child); ^^^^^
内容的提问来源于stack exchange,提问作者seza
相关产品推荐
相关产品推荐

