Skip to content

Commit

Permalink
refactor: BlocObserver const constructor (#3704)
Browse files Browse the repository at this point in the history
  • Loading branch information
ValentinVignal committed Feb 5, 2023
1 parent 7330745 commit 34a03b6
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 10 deletions.
4 changes: 3 additions & 1 deletion packages/bloc/example/main.dart
Expand Up @@ -3,6 +3,8 @@ import 'dart:async';
import 'package:bloc/bloc.dart';

class SimpleBlocObserver extends BlocObserver {
const SimpleBlocObserver();

@override
void onCreate(BlocBase bloc) {
super.onCreate(bloc);
Expand Down Expand Up @@ -41,7 +43,7 @@ class SimpleBlocObserver extends BlocObserver {
}

void main() {
Bloc.observer = SimpleBlocObserver();
Bloc.observer = const SimpleBlocObserver();
cubitMain();
blocMain();
}
Expand Down
6 changes: 4 additions & 2 deletions packages/bloc/lib/src/bloc.dart
Expand Up @@ -46,7 +46,7 @@ abstract class Bloc<Event, State> extends BlocBase<State>
Bloc(State initialState) : super(initialState);

/// The current [BlocObserver] instance.
static BlocObserver observer = _DefaultBlocObserver();
static BlocObserver observer = const _DefaultBlocObserver();

/// The default [EventTransformer] used for all event handlers.
/// By default all events are processed concurrently.
Expand Down Expand Up @@ -293,7 +293,9 @@ class _Handler {
final Type type;
}

class _DefaultBlocObserver extends BlocObserver {}
class _DefaultBlocObserver extends BlocObserver {
const _DefaultBlocObserver();
}

class _FlatMapStreamTransformer<T> extends StreamTransformerBase<Stream<T>, T> {
const _FlatMapStreamTransformer();
Expand Down
5 changes: 5 additions & 0 deletions packages/bloc/lib/src/bloc_observer.dart
@@ -1,8 +1,13 @@
import 'package:bloc/bloc.dart';
import 'package:meta/meta.dart';

/// {@template bloc_observer}
/// An interface for observing the behavior of [Bloc] instances.
/// {@endtemplate}
abstract class BlocObserver {
/// {@macro bloc_observer}
const BlocObserver();

/// Called whenever a [Bloc] is instantiated.
/// In many cases, a cubit may be lazily instantiated and
/// [onCreate] can be used to observe exactly when the cubit
Expand Down
16 changes: 9 additions & 7 deletions packages/bloc/test/bloc_observer_test.dart
Expand Up @@ -3,7 +3,9 @@ import 'package:test/test.dart';

import 'blocs/blocs.dart';

class DefaultBlocObserver extends BlocObserver {}
class DefaultBlocObserver extends BlocObserver {
const DefaultBlocObserver();
}

void main() {
final bloc = CounterBloc();
Expand All @@ -20,42 +22,42 @@ void main() {
group('onCreate', () {
test('does nothing by default', () {
// ignore: invalid_use_of_protected_member
DefaultBlocObserver().onCreate(bloc);
const DefaultBlocObserver().onCreate(bloc);
});
});

group('onEvent', () {
test('does nothing by default', () {
// ignore: invalid_use_of_protected_member
DefaultBlocObserver().onEvent(bloc, event);
const DefaultBlocObserver().onEvent(bloc, event);
});
});

group('onChange', () {
test('does nothing by default', () {
// ignore: invalid_use_of_protected_member
DefaultBlocObserver().onChange(bloc, change);
const DefaultBlocObserver().onChange(bloc, change);
});
});

group('onTransition', () {
test('does nothing by default', () {
// ignore: invalid_use_of_protected_member
DefaultBlocObserver().onTransition(bloc, transition);
const DefaultBlocObserver().onTransition(bloc, transition);
});
});

group('onError', () {
test('does nothing by default', () {
// ignore: invalid_use_of_protected_member
DefaultBlocObserver().onError(bloc, error, stackTrace);
const DefaultBlocObserver().onError(bloc, error, stackTrace);
});
});

group('onClose', () {
test('does nothing by default', () {
// ignore: invalid_use_of_protected_member
DefaultBlocObserver().onClose(bloc);
const DefaultBlocObserver().onClose(bloc);
});
});
});
Expand Down

0 comments on commit 34a03b6

Please sign in to comment.