首页 > 解决方案 > Bloc Delegate:类只能扩展其他类。尝试指定不同的超类,或删除 extends 子句

问题描述

我正在将我的 flutter_bloc 升级到版本:

  flutter_bloc: ^7.0.0

  flutter_bloc: ^3.2.0

但现在似乎 BlocDelegate 类似乎不起作用,我被困在这个问题上

这是我的代码

import 'package:flutter_bloc/flutter_bloc.dart';

class SimpleBlocDelegate extends BlocDelegate {
@override
void onEvent(Bloc bloc, Object event) {
print(event);
super.onEvent(bloc, event);
}

@override
void onError(Bloc bloc, Object error, StackTrace stackTrace) {
print(error);
super.onError(bloc, error, stackTrace);
}

@override
void onTransition(Bloc bloc, Transition transition) {
print(transition);
super.onTransition(bloc, transition);
 }
}

有解决方案还是应该降级?

我的颤振版本:

Flutter 2.2.0 • 通道稳定•</p>

框架 • 修订 b22742018b(2 周前) • 2021-05-14 19:12:57 -0700

引擎 • 修订版 a9d88a4d18

工具 • Dart 2.13.0

标签: flutterdartblocflutter-bloc

解决方案


在 bloc 7.0.0 中,您可以使用 BlocObserver 类访问此 api,而不是从 BlocDelegate 扩展类应该从 BlocObserver 扩展。

class SimpleBlocObserver extends BlocObserver {
  @override
  void onCreate(BlocBase bloc) {...}

  @override
  void onEvent(Bloc bloc, Object event) {...}

  @override
  void onChange(BlocBase bloc, Object? event) {...}

  @override
  void onTransition(Bloc bloc, Transition transition) {...}

  @override
  void onError(BlocBase bloc, Object error, StackTrace stackTrace) {...}

  @override
  void onClose(BlocBase bloc) {...}
}

您可以在https://bloclibrary.dev/#/coreconcepts?id=blocobserver中阅读有关 BlocObserver 的更多信息


推荐阅读