Skip to content

Commit dc1d3b0

Browse files
author
Nguyễn Thái Học
committed
flutter_disposebag nnbd
1 parent be76d01 commit dc1d3b0

File tree

3 files changed

+25
-21
lines changed

3 files changed

+25
-21
lines changed

flutter_disposebag/lib/src/disposebag_mixin.dart

+5-4
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import 'package:meta/meta.dart';
77
/// A mixin that provides the [DisposeBag] that helps disposing Streams and closing Sinks.
88
@optionalTypeArgs
99
mixin DisposeBagMixin<T extends StatefulWidget> on State<T> {
10-
Completer<bool> _mockBagDisposed;
10+
Completer<bool>? _mockBagDisposed;
1111

1212
/// Set mock [DisposeBag] for testing purpose.
1313
/// Returns a [Future] that completes when [DisposeBag.dispose] completes.
@@ -21,7 +21,7 @@ mixin DisposeBagMixin<T extends StatefulWidget> on State<T> {
2121
//
2222
//
2323

24-
DisposeBag _bag;
24+
DisposeBag? _bag;
2525

2626
/// Get [DisposeBag]
2727
@protected
@@ -35,9 +35,10 @@ mixin DisposeBagMixin<T extends StatefulWidget> on State<T> {
3535
@override
3636
void dispose() {
3737
final future = _bag?.dispose();
38+
_bag = null;
3839

39-
if (future != null && _mockBagDisposed != null) {
40-
_mockBagDisposed.complete(future);
40+
if (future != null) {
41+
_mockBagDisposed?.complete(future);
4142
}
4243

4344
super.dispose();

flutter_disposebag/pubspec.yaml

+3-2
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,12 @@ repository: https://github.com/hoc081098/disposebag/tree/master/flutter_disposeb
77
issue_tracker: https://github.com/hoc081098/disposebag/issues
88

99
environment:
10-
sdk: '>=2.7.0 <3.0.0'
10+
sdk: '>=2.12.0-0 <3.0.0'
1111

1212
dependencies:
1313
meta: ^1.1.6
14-
disposebag: '>=1.0.0 <2.0.0'
14+
disposebag:
15+
path: ../
1516
flutter:
1617
sdk: flutter
1718

flutter_disposebag/test/flutter_disposebag_test.dart

+17-15
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,14 @@ const buttonKey = Key('button_key');
1010
class MyWidget extends StatefulWidget {
1111
final DisposeBag disposeBag;
1212

13-
MyWidget({this.disposeBag}) : super(key: key);
13+
MyWidget({required this.disposeBag}) : super(key: key);
1414

1515
@override
1616
_MyWidgetState createState() => _MyWidgetState();
1717
}
1818

1919
class _MyWidgetState extends State<MyWidget> with DisposeBagMixin {
20-
Future<bool> disposed;
20+
late Future<bool> disposed;
2121

2222
@override
2323
void initState() {
@@ -52,29 +52,31 @@ class _MyWidgetState extends State<MyWidget> with DisposeBagMixin {
5252

5353
void main() {
5454
group('DisposeBagMixin', () {
55-
DisposeBag disposeBag;
55+
late DisposeBag disposeBag;
5656

5757
setUp(() {
5858
disposeBag = DisposeBag();
5959
});
6060

61-
testWidgets('DisposeBagMixin.disposed', (tester) async {
62-
final myWidget = MyWidget(disposeBag: disposeBag);
63-
await tester.pumpWidget(myWidget);
61+
testWidgets('DisposeBagMixin.disposed', (tester) {
62+
return tester.runAsync(() async {
63+
final myWidget = MyWidget(disposeBag: disposeBag);
64+
await tester.pumpWidget(myWidget);
6465

65-
final disposed = key.currentState.disposed;
66+
final disposed = key.currentState!.disposed;
6667

67-
final button = find.byKey(buttonKey);
68-
expect(button, findsOneWidget);
68+
final button = find.byKey(buttonKey);
69+
expect(button, findsOneWidget);
6970

70-
await tester.tap(button);
71-
await tester.pumpAndSettle();
72-
expect(disposeBag.length, 2);
71+
await tester.tap(button);
72+
await tester.pumpAndSettle();
73+
expect(disposeBag.length, 2);
7374

74-
await tester.pumpWidget(Container());
75-
await tester.runAsync(() => disposed);
75+
await tester.pumpWidget(Container());
76+
await disposed;
7677

77-
expect(disposeBag.isDisposed, isTrue);
78+
expect(disposeBag.isDisposed, isTrue);
79+
});
7880
});
7981
});
8082
}

0 commit comments

Comments
 (0)