Flutterr集团,如何记录事件变化



我在控制台中有记录状态更改的代码,代码如下所示。

class ApplicationBlocObserver extends BlocObserver {
@override
void onChange(BlocBase bloc, Change change) {
super.onChange(bloc, change);
log('stateChange(${bloc.runtimeType} ${change.currentState})');
}
@override
void onError(BlocBase bloc, Object error, StackTrace stackTrace) {
log('onError(${bloc.runtimeType}, $error, $stackTrace)');
super.onError(bloc, error, stackTrace);
}
}

我还需要记录事件,这样用户就可以在应用程序中启动,我该怎么做?

我希望它看起来像这个

log('stateChange(${bloc.runtimeType}, event ${something that show event } started. State is ${change.currentState})');

使用onEvent回调:

@override
void onEvent(Bloc bloc, Object? event) {
super.onEvent(bloc, event);
log(...)
}

有关可能回调的更多信息,请点击此处:https://pub.dev/documentation/bloc/latest/bloc/BlocObserver-class.html

使用BlocObserver类。

创建一个新文件:

import 'package:flutter_bloc/flutter_bloc.dart';
import 'dart:developer';
class GlobalBlocObserver extends BlocObserver {
@override
void onEvent(Bloc bloc, Object? event) {
super.onEvent(bloc, event);
log('${bloc.runtimeType} $event', name: 'Test log');
}
@override
void onChange(BlocBase bloc, Change change) {
super.onChange(bloc, change);
log('${bloc.runtimeType} $change', name: 'Test log');
}
@override
void onTransition(Bloc bloc, Transition transition) {
super.onTransition(bloc, transition);
log('${bloc.runtimeType} $transition', name: 'Test log');
}
@override
void onError(BlocBase bloc, Object error, StackTrace stackTrace) {
super.onError(bloc, error, stackTrace);
log('${bloc.runtimeType} $error $stackTrace', name: 'Test log');
}
}

以及在您的main.dart:中

void main() {
Bloc.observer = GlobalBlocObserver();
runApp(MyApp());
}

就是这样!

最新更新