颤振:simple_bloc_observer.onError

Flutter: simple_bloc_observer.onError

每次尝试运行下面的代码,都编译失败,错误在代码的第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);
  }
}

对于 flutter_bloc: ^7.0.0 you need to 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

您可以将 Cubit cubit 更改为 BlocBase bloc

代码片段

void onError(BlocBase bloc, Object error, StackTrace stackTrace)

bloc source code

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

example

代码片段

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