Skip to content

Commit

Permalink
add AutoDisposable interface type
Browse files Browse the repository at this point in the history
  • Loading branch information
alextekartik committed Nov 27, 2024
1 parent 1a198a0 commit f4b6fa5
Show file tree
Hide file tree
Showing 5 changed files with 38 additions and 3 deletions.
4 changes: 3 additions & 1 deletion app/lib/auto_dispose.dart
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
export 'src/audi/auto_dispose.dart' show AutoDisposeMixin, AutoDispose;
export 'src/audi/auto_disposable.dart' show AutoDisposable;
export 'src/audi/auto_dispose.dart'
show AutoDisposeMixin, AutoDispose, AutoDisposeDisposableExt;
5 changes: 5 additions & 0 deletions app/lib/src/audi/auto_disposable.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
/// Auto dispose class
abstract class AutoDisposable {
/// Dispose function
void audiDispose();
}
10 changes: 10 additions & 0 deletions app/lib/src/audi/auto_dispose.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import 'dart:async';

import 'package:tekartik_app_common_utils/auto_dispose.dart';

/// Auto dispose function
typedef AutoDisposeFunction = void Function();

Expand All @@ -15,6 +17,14 @@ class _AutoDisposer<T extends Object> {
_AutoDisposer({required this.object, required this.dispose});
}

/// Auto dispose extension
extension AutoDisposeDisposableExt on AutoDispose {
/// Dispose the object
void audiAddDisposable(AutoDisposable disposable) {
audiAdd(disposable, disposable.audiDispose);
}
}

/// Auto dispose interface
abstract class AutoDispose {
/// Add a StreamSubscription to the auto dispose list
Expand Down
2 changes: 1 addition & 1 deletion app/pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: tekartik_app_common_utils
description: App utilities only dependend on platform, common and lints
version: 0.2.0
version: 0.2.1
homepage: https://www.example.com

publish_to: none
Expand Down
20 changes: 19 additions & 1 deletion app/test/auto_dispose_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,20 @@ class _TestDisposable {
}
}

class _TestAutoDisposable implements AutoDisposable {
var disposed = false;
@override
void audiDispose() {
disposed = true;
}
}

/// Test mixin
class _AutoDisposer with AutoDisposeMixin {}

void main() {
group('audi', () {
test('object auto', () {
test('object disposable', () {
var disposer = _AutoDisposer();
var disposable = _TestDisposable();
disposer.audiAdd(disposable, disposable.dispose);
Expand All @@ -27,6 +35,16 @@ void main() {
expect(disposable.disposed, true);
expect(disposer.length, 0);
});
test('object auto disposable', () {
var disposer = _AutoDisposer();
var disposable = _TestAutoDisposable();
disposer.audiAddDisposable(disposable);
expect(disposable.disposed, false);
expect(disposer.length, 1);
disposer.audiDisposeAll();
expect(disposable.disposed, true);
expect(disposer.length, 0);
});
test('function', () {
var doFail = false;
var disposed = false;
Expand Down

0 comments on commit f4b6fa5

Please sign in to comment.