问题描述
我有一个集团在听另一个集团。将Flutter_bloc
程序包更新为version 6.0.2
后,监听器将不再在初始状态下调用。
class BlocA extends Bloc {
final BlocB blocB = ...;
...
blocA.blocB.listen((state) {
DO SOMTTHING...
});
...
}
我找到了这个解决方案:
class BlocB extends Bloc<...,...> with BehaviorSubjectBloc {
...
}
mixin BehaviorSubjectBloc<TEvent,TState> on Bloc<TEvent,TState> {
@override
StreamSubscription<TState> listen(
void Function(TState state) onData,{
Function onError,void Function() onDone,bool cancelOnError,}) {
onData(this.state);
return super.listen(
onData,onError: onError,onDone: onDone,cancelOnError: cancelOnError,);
}
}
我想知道有没有更好的解决方案?
解决方法
在flutter_bloc仓库中有一个关于它的问题:
https://github.com/felangel/bloc/issues/1641
问题在待办事项列表上。
您可以使用单引号并删除“ ^”或任何其他符号来修复yaml以强制使用先前的版本。删除您的~/.pub-cache/...
文件夹和pubspec.lock
文件,再次运行flutter packages get
,然后开心一点。
请注意,pub-cache文件夹在所有项目之间共享,因此您可以尝试仅删除其中的特定程序包。
您可以使用flutter packages pub deps
调查传递依赖,以查看flutter_bloc
依赖并将其删除。