每当我尝试运行以下代码时,它都无法编译,错误在代码的第 17 行,它在 Future 之后的 onError 字符串中,期待您的回复。
import 'package:flutter_bloc/flutter_bloc.dart';
class SimpleBlocObserver extends BlocObserver {
@override
void onEvent(Bloc bloc, Object event) {
print(event);
super.onEvent(bloc, event);
}
@override
void onTransition(Bloc bloc, Transition transition) {
print(transition);
super.onTransition(bloc, transition);
}
@override
Future<void> onError(Cubit cubit, Object error, StackTrace stackTrace) async {
print(error);
super.onError(cubit, error, stackTrace);
}
}
答案 0 :(得分:0)
对于flutter_bloc: ^7.0.0,您需要migrate进行一些更改
v6.1.x
@override
void onError(Cubit cubit, Object error, StackTrace stackTrace) {...}
v7.0.0
@override
void onError(BlocBase bloc, Object error, StackTrace stackTrace) {...}
此处的第一个位置参数必须是 BlocBase bloc
。
答案 1 :(得分:0)
您可以将 Cubit cubit
更改为 BlocBase bloc
代码片段
void onError(BlocBase bloc, Object error, StackTrace stackTrace)
// Called whenever an [error] is thrown in any [Bloc] or [Cubit].
/// The [stackTrace] argument may be [StackTrace.empty] if an error
/// was received without a stack trace.
@protected
@mustCallSuper
void onError(BlocBase bloc, Object error, StackTrace stackTrace) {}
@override
void onError(BlocBase bloc, Object error, StackTrace stackTrace) {
print('onError -- bloc: ${bloc.runtimeType}, error: $error');
super.onError(bloc, error, stackTrace);
}