-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Stable release and move bloc related APIs to comms package (#61)
* Stable release and move bloc related APIs to comms package - update changelog and pubspec version - bump sdk constraint, bump packages, remove uuid package - add README - remove bloc related APIs which were moved to comms package Closes #59 * Update flutter_comms workflows * Update pubspec flutter constraint * Set publish dart sdk to 3.0.6
- Loading branch information
1 parent
0049c21
commit 0f07e1a
Showing
13 changed files
with
96 additions
and
215 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,81 @@ | ||
# flutter_comms | ||
|
||
Simple communication pattern abstraction on streams, created for communication between blocs and or widgets. | ||
[![codestyle][pub_badge_style]][pub_badge_link] | ||
|
||
`flutter_comms` builds on top of [comms], making it easier to implement comms pattern | ||
in Flutter projects. | ||
|
||
For use in dart only projects, use [comms]. | ||
|
||
## Installation | ||
|
||
```console | ||
$ flutter pub add flutter_comms | ||
``` | ||
|
||
## Basic usage | ||
|
||
You can mix in `Listener` and `Sender` mixins to widgets but for more convenience | ||
helper widgets have been prepared. | ||
|
||
### MessageListener | ||
|
||
A `MessageListener` works exactly like `Listener` but calls `listen` and `cancel` | ||
functions for you, enabling it to receive messages from any `Sender`sharing the | ||
same message type. | ||
|
||
```dart | ||
MessageListener<MessageA>( | ||
onMessage: (message) { | ||
// handle received messages | ||
}, | ||
onIntialMessage: (message) { | ||
// handle initial message | ||
}, | ||
child: Widget(), | ||
) | ||
``` | ||
|
||
### MultiMessageListener | ||
|
||
Merges multiple `MessageListener` widgets, improving the readability of | ||
nested `MessageListener`s. | ||
|
||
```dart | ||
MultiMessageListener( | ||
listeners: [ | ||
MessageListener<MessageA>( | ||
onMessage: (message) {}, | ||
), | ||
MessageListener<MessageB>( | ||
onMessage: (message) {}, | ||
), | ||
], | ||
child: Widget(), | ||
) | ||
``` | ||
|
||
### useMessageListener | ||
|
||
`useMessageListener` hook calls `onMessage` everytime a message of type `Message` | ||
is received. Works similarly to `Listener` but handles starting message receiving | ||
and cleaning up itself. | ||
|
||
This hook will receive messages only when `HookWidget` using it is built. | ||
|
||
```dart | ||
Widget build(BuildContext context) { | ||
useMessageListener<MessageA>( | ||
(message) { | ||
// handle received messages | ||
}, | ||
onInitialMessage: (message) { | ||
// handle initial message | ||
} | ||
); | ||
} | ||
``` | ||
|
||
[pub_badge_style]: https://img.shields.io/badge/style-leancode__lint-black | ||
[pub_badge_link]: https://pub.dartlang.org/packages/leancode_lint | ||
[comms]: https://pub.dev/packages/comms |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,8 +1,5 @@ | ||
export 'package:comms/comms.dart'; | ||
|
||
export 'src/listener_bloc.dart'; | ||
export 'src/listener_cubit.dart'; | ||
export 'src/state_sender.dart'; | ||
export 'src/use_message_listener.dart'; | ||
export 'src/widgets/message_listener.dart'; | ||
export 'src/widgets/multi_message_listener.dart'; |
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,24 +1,22 @@ | ||
name: flutter_comms | ||
description: Simple communication pattern abstraction on streams, created for communication between blocs and or widgets. | ||
version: 0.0.6+2 | ||
version: 1.0.0 | ||
homepage: https://github.com/leancodepl/comms | ||
|
||
environment: | ||
sdk: ">=2.17.0 <3.0.0" | ||
flutter: ">=3.0.0 <4.0.0" | ||
sdk: ">=3.0.0 <4.0.0" | ||
flutter: ">=3.10.0 <4.0.0" | ||
|
||
dependencies: | ||
bloc: ^8.1.0 | ||
comms: ^0.0.9 | ||
comms: ^1.0.1 | ||
flutter: | ||
sdk: flutter | ||
flutter_hooks: ^0.18.2 | ||
logging: ^1.0.2 | ||
meta: ^1.7.0 | ||
logging: ^1.2.0 | ||
meta: ^1.9.1 | ||
nested: ^1.0.0 | ||
uuid: ^3.0.6 | ||
|
||
dev_dependencies: | ||
flutter_test: | ||
sdk: flutter | ||
leancode_lint: ^2.1.0+1 | ||
leancode_lint: ^4.0.0+1 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,77 +1,7 @@ | ||
import 'package:comms/comms.dart'; | ||
import 'package:flutter_test/flutter_test.dart'; | ||
|
||
import 'listeners/product_count_cubit.dart'; | ||
import 'senders/basket_cubit.dart'; | ||
|
||
int numberOfProductCountMessageSink() => | ||
MessageSinkRegister().getSinksOfType<ProductCountChangedMessage>().length; | ||
|
||
void main() { | ||
group('ListenerCubit - Sender:', () { | ||
test( | ||
'ProductCountListenerCubit message sink is added to register after constructor', | ||
() async { | ||
final cubit = ProductCountListenerCubit(); | ||
expect(numberOfProductCountMessageSink(), 1); | ||
await cubit.close(); | ||
}, | ||
); | ||
|
||
test( | ||
'ProductCountListenerCubit message sink is removed from register after close', | ||
() async { | ||
final cubit = ProductCountListenerCubit(); | ||
expect(numberOfProductCountMessageSink(), 1); | ||
await cubit.close(); | ||
expect(numberOfProductCountMessageSink(), 0); | ||
}, | ||
); | ||
|
||
test( | ||
'ProductCountListenerCubit state is consistent with number of elements in BasketCubit state', | ||
() async { | ||
final basketCubit = BasketCubit(); | ||
final productCountCubit = ProductCountListenerCubit(); | ||
|
||
basketCubit | ||
..add('T-shirt') | ||
..add('Socks'); | ||
await Future<void>.delayed(Duration.zero); | ||
|
||
expect(productCountCubit.state, basketCubit.state.length); | ||
|
||
basketCubit.removeLast(); | ||
await Future<void>.delayed(Duration.zero); | ||
|
||
expect(productCountCubit.state, basketCubit.state.length); | ||
|
||
await basketCubit.close(); | ||
await productCountCubit.close(); | ||
}, | ||
); | ||
|
||
test( | ||
'ProductCountListenerCubit correctly sets initial state using buffered message', | ||
() async { | ||
final basketCubit = BasketCubit()..add('Jeans'); | ||
final productCountCubit = ProductCountListenerCubit(); | ||
|
||
basketCubit | ||
..add('T-shirt') | ||
..add('Socks'); | ||
await Future<void>.delayed(Duration.zero); | ||
|
||
expect(productCountCubit.state, basketCubit.state.length); | ||
|
||
basketCubit.removeLast(); | ||
await Future<void>.delayed(Duration.zero); | ||
|
||
expect(productCountCubit.state, basketCubit.state.length); | ||
|
||
await basketCubit.close(); | ||
await productCountCubit.close(); | ||
}, | ||
); | ||
test('', () { | ||
expect(2 + 2, 4); | ||
}); | ||
} |
34 changes: 0 additions & 34 deletions
34
packages/flutter_comms/test/listeners/product_count_cubit.dart
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.