Skip to content

Commit

Permalink
feat(bricks): hydrated_bloc v0.2.0 (#3545)
Browse files Browse the repository at this point in the history
  • Loading branch information
felangel authored Sep 17, 2022
1 parent 44ec3b8 commit f4c2c84
Show file tree
Hide file tree
Showing 17 changed files with 149 additions and 38 deletions.
5 changes: 5 additions & 0 deletions bricks/hydrated_bloc/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
# 0.2.0

- feat: add support for `equatable`
- feat: add support for `freezed`

# 0.1.2

- docs: add badges to README
Expand Down
9 changes: 5 additions & 4 deletions bricks/hydrated_bloc/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,15 @@ Generate a new HydratedBloc in [Dart][1]. Built for the [bloc state management l
## Usage 🚀

```sh
mason make hydrated_bloc --name counter
mason make hydrated_bloc --name counter --style basic
```

## Variables ✨

| Variable | Description | Default | Type |
| -------- | -------------------------- | --------- | -------- |
| `name` | The name of the bloc class | `counter` | `string` |
| Variable | Description | Default | Type |
| -------- | --------------------------- | ----------------------------------- | -------- |
| `name` | The name of the bloc class | `counter` | `string` |
| `style` | The style of bloc generated | `basic (basic, equatable, freezed)` | `enum` |

## Output 📦

Expand Down
23 changes: 1 addition & 22 deletions bricks/hydrated_bloc/__brick__/{{name.snakeCase()}}_bloc.dart
Original file line number Diff line number Diff line change
@@ -1,22 +1 @@
import 'package:hydrated_bloc/hydrated_bloc.dart';

part '{{name.snakeCase()}}_event.dart';
part '{{name.snakeCase()}}_state.dart';

class {{name.pascalCase()}}Bloc extends HydratedBloc<{{name.pascalCase()}}Event, {{name.pascalCase()}}State> {
{{name.pascalCase()}}Bloc() : super(const {{name.pascalCase()}}State()) {
on<{{name.pascalCase()}}Event>((event, emit) {
// TODO: implement event handler
});
}

@override
Map<String, dynamic> toJson({{name.pascalCase()}}State state) {
// TODO: implement toJson
}

@override
{{name.pascalCase()}}State fromJson(Map<String, dynamic> json) {
// TODO: implement fromJson
}
}
{{#use_freezed}}{{> freezed_bloc }}{{/use_freezed}}{{#use_equatable}}{{> equatable_bloc }}{{/use_equatable}}{{#use_basic}}{{> basic_bloc }}{{/use_basic}}
Original file line number Diff line number Diff line change
@@ -1,5 +1 @@
part of '{{name.snakeCase()}}_bloc.dart';

abstract class {{name.pascalCase()}}Event {
const {{name.pascalCase()}}Event();
}
{{#use_freezed}}{{> freezed_event }}{{/use_freezed}}{{#use_equatable}}{{> equatable_event }}{{/use_equatable}}{{#use_basic}}{{> basic_event }}{{/use_basic}}
Original file line number Diff line number Diff line change
@@ -1,5 +1 @@
part of '{{name.snakeCase()}}_bloc.dart';

class {{name.pascalCase()}}State {
const {{name.pascalCase()}}State();
}
{{#use_freezed}}{{> freezed_state }}{{/use_freezed}}{{#use_equatable}}{{> equatable_state }}{{/use_equatable}}{{#use_basic}}{{> basic_state }}{{/use_basic}}
22 changes: 22 additions & 0 deletions bricks/hydrated_bloc/__brick__/{{~ basic_bloc }}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import 'package:hydrated_bloc/hydrated_bloc.dart';

part '{{name.snakeCase()}}_event.dart';
part '{{name.snakeCase()}}_state.dart';

class {{name.pascalCase()}}Bloc extends HydratedBloc<{{name.pascalCase()}}Event, {{name.pascalCase()}}State> {
{{name.pascalCase()}}Bloc() : super(const {{name.pascalCase()}}State()) {
on<{{name.pascalCase()}}Event>((event, emit) {
// TODO: implement event handler
});
}

@override
Map<String, dynamic> toJson({{name.pascalCase()}}State state) {
// TODO: implement toJson
}

@override
{{name.pascalCase()}}State fromJson(Map<String, dynamic> json) {
// TODO: implement fromJson
}
}
5 changes: 5 additions & 0 deletions bricks/hydrated_bloc/__brick__/{{~ basic_event }}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
part of '{{name.snakeCase()}}_bloc.dart';

abstract class {{name.pascalCase()}}Event {
const {{name.pascalCase()}}Event();
}
5 changes: 5 additions & 0 deletions bricks/hydrated_bloc/__brick__/{{~ basic_state }}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
part of '{{name.snakeCase()}}_bloc.dart';

class {{name.pascalCase()}}State {
const {{name.pascalCase()}}State();
}
23 changes: 23 additions & 0 deletions bricks/hydrated_bloc/__brick__/{{~ equatable_bloc }}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import 'package:equatable/equatable.dart';
import 'package:hydrated_bloc/hydrated_bloc.dart';

part '{{name.snakeCase()}}_event.dart';
part '{{name.snakeCase()}}_state.dart';

class {{name.pascalCase()}}Bloc extends HydratedBloc<{{name.pascalCase()}}Event, {{name.pascalCase()}}State> {
{{name.pascalCase()}}Bloc() : super(const {{name.pascalCase()}}State()) {
on<{{name.pascalCase()}}Event>((event, emit) {
// TODO: implement event handler
});
}

@override
Map<String, dynamic> toJson({{name.pascalCase()}}State state) {
// TODO: implement toJson
}

@override
{{name.pascalCase()}}State fromJson(Map<String, dynamic> json) {
// TODO: implement fromJson
}
}
8 changes: 8 additions & 0 deletions bricks/hydrated_bloc/__brick__/{{~ equatable_event }}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
part of '{{name.snakeCase()}}_bloc.dart';

abstract class {{name.pascalCase()}}Event extends Equatable {
const {{name.pascalCase()}}Event();

@override
List<Object> get props => [];
}
8 changes: 8 additions & 0 deletions bricks/hydrated_bloc/__brick__/{{~ equatable_state }}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
part of '{{name.snakeCase()}}_bloc.dart';

class {{name.pascalCase()}}State extends Equatable {
const {{name.pascalCase()}}State();

@override
List<Object> get props => [];
}
24 changes: 24 additions & 0 deletions bricks/hydrated_bloc/__brick__/{{~ freezed_bloc }}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import 'package:freezed_annotation/freezed_annotation.dart';
import 'package:hydrated_bloc/hydrated_bloc.dart';

part '{{name.snakeCase()}}_event.dart';
part '{{name.snakeCase()}}_state.dart';
part '{{name.snakeCase()}}_bloc.freezed.dart';

class {{name.pascalCase()}}Bloc extends HydratedBloc<{{name.pascalCase()}}Event, {{name.pascalCase()}}State> {
{{name.pascalCase()}}Bloc() : super(const {{name.pascalCase()}}State.initial()) {
on<{{name.pascalCase()}}Event>((event, emit) {
// TODO: implement event handler
});
}

@override
Map<String, dynamic> toJson({{name.pascalCase()}}State state) {
// TODO: implement toJson
}

@override
{{name.pascalCase()}}State fromJson(Map<String, dynamic> json) {
// TODO: implement fromJson
}
}
6 changes: 6 additions & 0 deletions bricks/hydrated_bloc/__brick__/{{~ freezed_event }}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
part of '{{name.snakeCase()}}_bloc.dart';

@freezed
class {{name.pascalCase()}}Event with _${{name.pascalCase()}}Event {
const factory {{name.pascalCase()}}Event.started() = _Started;
}
6 changes: 6 additions & 0 deletions bricks/hydrated_bloc/__brick__/{{~ freezed_state }}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
part of '{{name.snakeCase()}}_bloc.dart';

@freezed
class {{name.pascalCase()}}State with _${{name.pascalCase()}}State {
const factory {{name.pascalCase()}}State.initial() = _Initial;
}
13 changes: 11 additions & 2 deletions bricks/hydrated_bloc/brick.yaml
Original file line number Diff line number Diff line change
@@ -1,14 +1,23 @@
name: hydrated_bloc
description: Generate a new HydratedBloc in Dart. Built for the bloc state management library.
version: 0.1.2
version: 0.2.0
repository: https://github.com/felangel/bloc/tree/master/bricks/hydrated_bloc

environment:
mason: ">=0.1.0-dev.15 <0.1.0"
mason: ">=0.1.0-dev.32 <0.1.0"

vars:
name:
type: string
description: The name of the bloc class.
default: counter
prompt: Please enter the bloc name.
style:
type: enum
description: The style of bloc generated.
default: basic
prompt: What is the bloc style?
values:
- basic
- equatable
- freezed
11 changes: 11 additions & 0 deletions bricks/hydrated_bloc/hooks/pre_gen.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import 'package:mason/mason.dart';

Future<void> run(HookContext context) async {
final style = context.vars['style'];
context.vars = {
...context.vars,
'use_basic': style == 'basic',
'use_equatable': style == 'equatable',
'use_freezed': style == 'freezed',
};
}
7 changes: 7 additions & 0 deletions bricks/hydrated_bloc/hooks/pubspec.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
name: hydrated_bloc_hooks

environment:
sdk: ">=2.12.0 <3.0.0"

dependencies:
mason: ^0.1.0-dev

0 comments on commit f4c2c84

Please sign in to comment.