Compare commits
No commits in common. "61c6e637ec94841e7e6322973cb22c010824a9b4" and "58fec4bf4861152ba69484a8c817198f6358c3ef" have entirely different histories.
61c6e637ec
...
58fec4bf48
@ -116,19 +116,6 @@ Widget onBuild(BuildContext context, CounterState state) {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
If needed, you can wrap what depends on the state with the function `onWrap`.
|
|
||||||
|
|
||||||
```dart
|
|
||||||
@override
|
|
||||||
Widget onWrap(BuildContext context, Widget child) {
|
|
||||||
return Scaffold(
|
|
||||||
appBar: AppBar(
|
|
||||||
title: const Text('Title'),
|
|
||||||
),
|
|
||||||
body: child,
|
|
||||||
);
|
|
||||||
```
|
|
||||||
|
|
||||||
> Note: you can override `onBuild`, but also `onListen`, `shouldBuildWhen` and `shouldListenWhen` methods.
|
> Note: you can override `onBuild`, but also `onListen`, `shouldBuildWhen` and `shouldListenWhen` methods.
|
||||||
|
|
||||||
### Both BlocProvider and BlocConsumer
|
### Both BlocProvider and BlocConsumer
|
||||||
|
@ -36,20 +36,17 @@ abstract class BlocBaseConsumerScreen<B extends BlocBase<S>, S extends Object>
|
|||||||
/// must return a widget.
|
/// must return a widget.
|
||||||
Widget onBuild(BuildContext context, S state);
|
Widget onBuild(BuildContext context, S state);
|
||||||
|
|
||||||
/// The [onWrap] function which will be invoked on each widget build.
|
|
||||||
/// The [onWrap] takes the `BuildContext`
|
|
||||||
/// Used to wrap which depends on the state.
|
|
||||||
Widget onWrap(BuildContext context, Widget child) => child;
|
|
||||||
|
|
||||||
/// Takes the `BuildContext` along with the `state`
|
/// Takes the `BuildContext` along with the `state`
|
||||||
/// and is responsible for executing in response to `state` changes.
|
/// and is responsible for executing in response to `state` changes.
|
||||||
void onListen(BuildContext context, S state) {}
|
void onListen(BuildContext context, S state) {}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) => BlocConsumer<B, S>(
|
Widget build(BuildContext context) {
|
||||||
|
return BlocConsumer<B, S>(
|
||||||
listenWhen: shouldListenWhen,
|
listenWhen: shouldListenWhen,
|
||||||
listener: onListen,
|
listener: onListen,
|
||||||
buildWhen: shouldBuildWhen,
|
buildWhen: shouldBuildWhen,
|
||||||
builder: (context, state) => onWrap(context, onBuild(context, state)),
|
builder: onBuild,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
@ -28,8 +28,10 @@ abstract class BlocBaseProviderScreen<B extends BlocBase<S>, S extends Object>
|
|||||||
Widget buildChild(BuildContext context);
|
Widget buildChild(BuildContext context);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) => BlocProvider<B>(
|
Widget build(BuildContext context) {
|
||||||
|
return BlocProvider<B>(
|
||||||
create: (_) => create(context),
|
create: (_) => create(context),
|
||||||
child: Builder(builder: buildChild),
|
child: Builder(builder: buildChild),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
@ -26,8 +26,10 @@ abstract class BlocBaseScreen<B extends BlocBase<S>, S extends Object>
|
|||||||
B create(BuildContext context);
|
B create(BuildContext context);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) => BlocProvider<B>(
|
Widget build(BuildContext context) {
|
||||||
|
return BlocProvider<B>(
|
||||||
create: (_) => create(context),
|
create: (_) => create(context),
|
||||||
child: super.build(context),
|
child: super.build(context),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
@ -21,8 +21,8 @@ import 'package:flutter_bloc/flutter_bloc.dart';
|
|||||||
/// [Bloc] and [Cubit] widgets.
|
/// [Bloc] and [Cubit] widgets.
|
||||||
mixin BlocBaseProviderMixin<B extends BlocBase<Object>> {
|
mixin BlocBaseProviderMixin<B extends BlocBase<Object>> {
|
||||||
/// Returns the [BlocBase] used by this [BlocBaseProviderMixin].
|
/// Returns the [BlocBase] used by this [BlocBaseProviderMixin].
|
||||||
B bloc(BuildContext context) => context.read<B>();
|
B bloc(BuildContext context) => BlocProvider.of<B>(context);
|
||||||
|
|
||||||
/// Returns the [BlocBase] used by this [BlocBaseProviderMixin].
|
/// Returns the [BlocBase] used by this [BlocBaseProviderMixin].
|
||||||
R repo<R>(BuildContext context) => context.read<R>();
|
R repo<R>(BuildContext context) => RepositoryProvider.of<R>(context);
|
||||||
}
|
}
|
||||||
|
@ -20,5 +20,7 @@ import 'package:flutter_bloc/flutter_bloc.dart';
|
|||||||
/// [Bloc] specific mixin that provides implementation
|
/// [Bloc] specific mixin that provides implementation
|
||||||
/// of helper methods for events.
|
/// of helper methods for events.
|
||||||
mixin BlocProviderMixin<B extends Bloc<E, Object>, E> {
|
mixin BlocProviderMixin<B extends Bloc<E, Object>, E> {
|
||||||
void add(BuildContext context, E event) => context.read<B>().add(event);
|
void add(BuildContext context, E event) {
|
||||||
|
BlocProvider.of<B>(context).add(event);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user