1- import 'package:distinct_value_connectable_stream/distinct_value_connectable_stream.dart' ;
1+ import 'dart:async' ;
2+
23import 'package:flutter/material.dart' ;
34import 'package:flutter_bloc_pattern/flutter_bloc_pattern.dart' ;
45import 'package:flutter_disposebag/flutter_disposebag.dart' ;
@@ -20,11 +21,7 @@ class ResetPasswordPage extends StatefulWidget {
2021
2122class _ResetPasswordPageState extends State <ResetPasswordPage >
2223 with SingleTickerProviderStateMixin <ResetPasswordPage >, DisposeBagMixin {
23- /// Observable of bool values,
24- /// Emits true if current page is request email page
25- /// and reset password page otherwise
26- final requestEmailS = PublishSubject <void >();
27- DistinctValueConnectableStream <bool > requestEmail$;
24+ final requestEmailS = StreamController <void >(sync : true );
2825
2926 AnimationController animationController;
3027 Animation <Offset > animationPosition;
@@ -77,26 +74,22 @@ class _ResetPasswordPageState extends State<ResetPasswordPage>
7774 ),
7875 );
7976
80- requestEmail$ = requestEmailS
77+ /// Stream of bool values.
78+ /// Emits true if current page is request email page.
79+ /// Otherwise, it is reset password page.
80+ requestEmailS.stream
8181 .scan ((acc, e, _) => ! acc, true )
82- .publishValueSeededDistinct (seedValue: true );
83-
84- bag.addAll ([
85- requestEmail$.listen ((requestEmailPage) {
86- if (requestEmailPage) {
87- animationController.reverse ();
88- } else {
89- animationController.forward ();
90- }
91- }),
92- requestEmail$.connect (),
93- ]);
82+ .listen ((requestEmailPage) => requestEmailPage
83+ ? animationController.reverse ()
84+ : animationController.forward ())
85+ .disposedBy (bag);
86+ requestEmailS.disposedBy (bag);
9487 }
9588
9689 @override
9790 void dispose () {
98- animationController.dispose ();
9991 super .dispose ();
92+ animationController.dispose ();
10093 }
10194
10295 void onToggle () => requestEmailS.add (null );
0 commit comments