master #81
@ -16,12 +16,10 @@
|
|||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
-->
|
-->
|
||||||
|
|
||||||
# Flutter - BloC Helper
|
# BloC Helper
|
||||||
|
|
||||||
<p align="left">
|
<p align="left">
|
||||||
<a href="https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages/src/branch/master/packages/wyatt_analysis">
|
<a href="https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages/src/branch/master/packages/wyatt_analysis"><img src="https://img.shields.io/badge/Style-Wyatt%20Analysis-blue.svg?style=flat-square" alt="Style: Wyatt Analysis" /></a>
|
||||||
<img src="https://img.shields.io/badge/Style-Wyatt%20Analysis-blue.svg?style=flat-square" alt="Style: Wyatt Analysis" />
|
|
||||||
</a>
|
|
||||||
<img src="https://img.shields.io/badge/SDK-Flutter-blue?style=flat-square" alt="SDK: Flutter" />
|
<img src="https://img.shields.io/badge/SDK-Flutter-blue?style=flat-square" alt="SDK: Flutter" />
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
@ -86,7 +84,7 @@ Widget buildChild(BuildContext context) {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
> Note: here, you can use BlocBuilder, BlocListener,... and access Bloc and Repository instance with the mixin helper.
|
> Note: here, you can use BlocBuilder, BlocListener, ... and access Bloc and Repository instance with the mixin helper.
|
||||||
|
|
||||||
### Only BlocConsumer
|
### Only BlocConsumer
|
||||||
|
|
||||||
@ -116,7 +114,7 @@ Widget onBuild(BuildContext context, CounterState state) {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
If needed, you can wrap what depends on the state with the function `parent`.
|
If needed, you can wrap what depends on the state with the function `parent` .
|
||||||
|
|
||||||
```dart
|
```dart
|
||||||
@override
|
@override
|
||||||
@ -129,7 +127,7 @@ Widget parent(BuildContext context, Widget 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
|
||||||
|
|
||||||
|
@ -17,7 +17,12 @@
|
|||||||
import 'package:flutter/widgets.dart';
|
import 'package:flutter/widgets.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
|
|
||||||
|
/// A utility class that provides a way to create a [BlocProvider] or
|
||||||
|
/// [RepositoryProvider] with a [Bloc] or Repository that is already
|
||||||
|
/// available in the widget tree.
|
||||||
abstract class SmartProvider {
|
abstract class SmartProvider {
|
||||||
|
/// Creates a [BlocProvider] with a [Bloc] that is possibly already
|
||||||
|
/// available in the widget tree.
|
||||||
static BlocProvider<Bloc>
|
static BlocProvider<Bloc>
|
||||||
bloc<Bloc extends BlocBase<State>, State extends Object>(
|
bloc<Bloc extends BlocBase<State>, State extends Object>(
|
||||||
BuildContext context, {
|
BuildContext context, {
|
||||||
@ -45,6 +50,8 @@ abstract class SmartProvider {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Creates a [RepositoryProvider] with a Repository that is possibly
|
||||||
|
/// already available in the widget tree.
|
||||||
static RepositoryProvider<Repository> repo<Repository>(
|
static RepositoryProvider<Repository> repo<Repository>(
|
||||||
BuildContext context, {
|
BuildContext context, {
|
||||||
required Repository Function(BuildContext) create,
|
required Repository Function(BuildContext) create,
|
||||||
|
@ -77,9 +77,9 @@ import 'package:flutter_bloc/flutter_bloc.dart';
|
|||||||
class MultiProvider extends StatelessWidget {
|
class MultiProvider extends StatelessWidget {
|
||||||
/// {@macro multi_provider}
|
/// {@macro multi_provider}
|
||||||
const MultiProvider({
|
const MultiProvider({
|
||||||
required this.repositoryProviders,
|
|
||||||
required this.blocProviders,
|
|
||||||
required this.child,
|
required this.child,
|
||||||
|
this.repositoryProviders = const <RepositoryProvider<dynamic>>[],
|
||||||
|
this.blocProviders = const <BlocProvider>[],
|
||||||
super.key,
|
super.key,
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -88,11 +88,31 @@ class MultiProvider extends StatelessWidget {
|
|||||||
final Widget child;
|
final Widget child;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) => MultiRepositoryProvider(
|
Widget build(BuildContext context) {
|
||||||
|
if (repositoryProviders.isEmpty && blocProviders.isEmpty) {
|
||||||
|
return child;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (repositoryProviders.isEmpty) {
|
||||||
|
return MultiBlocProvider(
|
||||||
|
providers: blocProviders,
|
||||||
|
child: child,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (blocProviders.isEmpty) {
|
||||||
|
return MultiRepositoryProvider(
|
||||||
|
providers: repositoryProviders,
|
||||||
|
child: child,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return MultiRepositoryProvider(
|
||||||
providers: repositoryProviders,
|
providers: repositoryProviders,
|
||||||
child: MultiBlocProvider(
|
child: MultiBlocProvider(
|
||||||
providers: blocProviders,
|
providers: blocProviders,
|
||||||
child: child,
|
child: child,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,18 +6,16 @@ version: 2.0.0
|
|||||||
publish_to: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
publish_to: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: '>=2.17.0 <3.0.0'
|
sdk: ">=2.17.0 <3.0.0"
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
flutter:
|
flutter: { sdk: flutter }
|
||||||
sdk: flutter
|
|
||||||
|
|
||||||
flutter_bloc: ^8.1.1
|
flutter_bloc: ^8.1.1
|
||||||
equatable: ^2.0.5
|
equatable: ^2.0.5
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
flutter_test:
|
flutter_test: { sdk: flutter }
|
||||||
sdk: flutter
|
|
||||||
bloc_test: ^9.1.0
|
bloc_test: ^9.1.0
|
||||||
|
|
||||||
wyatt_analysis:
|
wyatt_analysis:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user