Skip to content

Commit

Permalink
Merge pull request #66 from LoveCommunity/feature/disposable-sink-add…
Browse files Browse the repository at this point in the history
…Dispose

add `scope.addDispose`
  • Loading branch information
beeth0ven committed Jul 7, 2022
2 parents 45e0628 + 1d42f45 commit 89e06f9
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 0 deletions.
8 changes: 8 additions & 0 deletions lib/src/scopes/scope_methods/disposable_sink.dart
Original file line number Diff line number Diff line change
@@ -1,8 +1,16 @@

import 'package:disposal/disposal.dart';
import 'package:typedef_foundation/typedef_foundation.dart';

abstract class DisposableSink {

void addDisposable(Disposable disposable);
void addDisposables(List<Disposable> disposables);
}

extension DisposableSinkX on DisposableSink {

void addDispose(VoidCallback dispose) {
addDisposable(Disposable(dispose));
}
}
1 change: 1 addition & 0 deletions lib/src/scopes/scopes.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
export 'configurables/configurable.dart';
export 'configurables/final.dart';
export 'errors/scope_value_not_exposed_error.dart';
export 'scope_methods/disposable_sink.dart';
export 'scope_methods/scope_get.dart';
export 'scope_methods/scope_expose.dart';
export 'scope_methods/scope_push.dart';
Expand Down
22 changes: 22 additions & 0 deletions test/scopes/scope_methods/disposable_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -151,4 +151,26 @@ void main() {
expect(invokes, 1);

});

test('`scope.addDispose` register dispose logic', () async {

int invokes = 0;

final configurable = MockConfigurable((scope) {

scope.addDispose(() {
invokes += 1;
});

});

final scope = await Scope.root([
configurable,
]);

expect(invokes, 0);
scope.dispose();
expect(invokes, 1);

});
}

0 comments on commit 89e06f9

Please sign in to comment.