颤振:simple_bloc_observer.onError

时间:2021-03-25 05:58:09

标签: flutter dart flutter-bloc

每当我尝试运行以下代码时,它都无法编译,错误在代码的第 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);
  }
}

2 个答案:

答案 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)

块源代码 https://github.com/felangel/bloc/blob/27c3f47e415198b4eeb6435c59a918f4277f180d/packages/bloc/lib/src/bloc_observer.dart#L41

  // 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) {}

示例https://github.com/felangel/bloc/blob/27c3f47e415198b4eeb6435c59a918f4277f180d/packages/bloc/example/main.dart#L31
代码片段

  @override
  void onError(BlocBase bloc, Object error, StackTrace stackTrace) {
    print('onError -- bloc: ${bloc.runtimeType}, error: $error');
    super.onError(bloc, error, stackTrace);
  }