From 125a7075ad3224c40bc1772fe27fc31f889ddb1c Mon Sep 17 00:00:00 2001 From: Shi Hao Hong Date: Fri, 10 Apr 2020 14:20:12 -0700 Subject: [PATCH 1/7] Fix accessibility of FadeScaleTransition example using FAB --- .../example/lib/fade_scale_transition.dart | 48 +++++++++++-------- 1 file changed, 29 insertions(+), 19 deletions(-) diff --git a/packages/animations/example/lib/fade_scale_transition.dart b/packages/animations/example/lib/fade_scale_transition.dart index 97773e1a4cb4..709ae256c246 100644 --- a/packages/animations/example/lib/fade_scale_transition.dart +++ b/packages/animations/example/lib/fade_scale_transition.dart @@ -16,8 +16,6 @@ class _FadeScaleTransitionDemoState extends State with SingleTickerProviderStateMixin { AnimationController _controller; - bool _showFab = true; - @override void initState() { _controller = AnimationController( @@ -25,7 +23,9 @@ class _FadeScaleTransitionDemoState extends State duration: const Duration(milliseconds: 150), reverseDuration: const Duration(milliseconds: 75), vsync: this, - ); + )..addListener(() { + setState(() {}); + }); super.initState(); } @@ -35,12 +35,25 @@ class _FadeScaleTransitionDemoState extends State super.dispose(); } + bool isAnimationRunningForwardsOrComplete () { + switch (_controller.status) { + case AnimationStatus.forward: + case AnimationStatus.completed: + return true; + break; + case AnimationStatus.reverse: + case AnimationStatus.dismissed: + return false; + break; + } + assert(true); + return null; + } + @override Widget build(BuildContext context) { return Scaffold( - appBar: AppBar( - title: const Text('Fade'), - ), + appBar: AppBar(title: const Text('Fade')), floatingActionButton: AnimatedBuilder( animation: _controller, builder: (BuildContext context, Widget child) { @@ -49,9 +62,12 @@ class _FadeScaleTransitionDemoState extends State child: child, ); }, - child: FloatingActionButton( - child: const Icon(Icons.add), - onPressed: () {}, + child: Visibility( + visible: _controller.value != 0, + child: FloatingActionButton( + child: const Icon(Icons.add), + onPressed: () {}, + ), ), ), bottomNavigationBar: Column( @@ -80,23 +96,17 @@ class _FadeScaleTransitionDemoState extends State const SizedBox(width: 10), RaisedButton( onPressed: () { - if (_showFab) { - setState(() { - _showFab = false; - }); + if (isAnimationRunningForwardsOrComplete()){ _controller.reverse(); } else { - setState(() { - _showFab = true; - }); _controller.forward(); } }, color: Theme.of(context).colorScheme.primary, textColor: Theme.of(context).colorScheme.onPrimary, - child: _showFab - ? const Text('HIDE FAB') - : const Text('SHOW FAB'), + child: isAnimationRunningForwardsOrComplete() + ? const Text('HIDE FAB') + : const Text('SHOW FAB'), ), ], ), From f12c8d19f31138f2d1b464847ab58d42c78552d8 Mon Sep 17 00:00:00 2001 From: Shi Hao Hong Date: Fri, 10 Apr 2020 14:20:49 -0700 Subject: [PATCH 2/7] Fix formatting --- .../example/lib/fade_scale_transition.dart | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/animations/example/lib/fade_scale_transition.dart b/packages/animations/example/lib/fade_scale_transition.dart index 709ae256c246..b460aae16423 100644 --- a/packages/animations/example/lib/fade_scale_transition.dart +++ b/packages/animations/example/lib/fade_scale_transition.dart @@ -24,8 +24,8 @@ class _FadeScaleTransitionDemoState extends State reverseDuration: const Duration(milliseconds: 75), vsync: this, )..addListener(() { - setState(() {}); - }); + setState(() {}); + }); super.initState(); } @@ -35,7 +35,7 @@ class _FadeScaleTransitionDemoState extends State super.dispose(); } - bool isAnimationRunningForwardsOrComplete () { + bool isAnimationRunningForwardsOrComplete() { switch (_controller.status) { case AnimationStatus.forward: case AnimationStatus.completed: @@ -96,7 +96,7 @@ class _FadeScaleTransitionDemoState extends State const SizedBox(width: 10), RaisedButton( onPressed: () { - if (isAnimationRunningForwardsOrComplete()){ + if (isAnimationRunningForwardsOrComplete()) { _controller.reverse(); } else { _controller.forward(); @@ -105,8 +105,8 @@ class _FadeScaleTransitionDemoState extends State color: Theme.of(context).colorScheme.primary, textColor: Theme.of(context).colorScheme.onPrimary, child: isAnimationRunningForwardsOrComplete() - ? const Text('HIDE FAB') - : const Text('SHOW FAB'), + ? const Text('HIDE FAB') + : const Text('SHOW FAB'), ), ], ), From 0a074b7854437509af89b7f2ba51f5cab9733b65 Mon Sep 17 00:00:00 2001 From: Shi Hao Hong Date: Fri, 10 Apr 2020 14:21:58 -0700 Subject: [PATCH 3/7] Update changelog --- packages/animations/CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/animations/CHANGELOG.md b/packages/animations/CHANGELOG.md index c29f1c3be6a3..4b48dd98cbed 100644 --- a/packages/animations/CHANGELOG.md +++ b/packages/animations/CHANGELOG.md @@ -1,5 +1,7 @@ ## [1.0.1-dev] - TBD +* Fix `FadeScaleTransition` example's `FloatingActionButton` being accessible +and tappable when it is supposed to be hidden. * Add custom fillColor property to `SharedAxisTransition` and `SharedAxisPageTransitionsBuilder`. * Fix prefer_const_constructors lint in test and example. From bec09a63fbeae5667e9dfa1eaf5c2ee6e42b464c Mon Sep 17 00:00:00 2001 From: Shi Hao Hong Date: Fri, 10 Apr 2020 14:36:02 -0700 Subject: [PATCH 4/7] Start FAB off as hidden instead of open --- packages/animations/example/lib/fade_scale_transition.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/animations/example/lib/fade_scale_transition.dart b/packages/animations/example/lib/fade_scale_transition.dart index b460aae16423..577d78c390db 100644 --- a/packages/animations/example/lib/fade_scale_transition.dart +++ b/packages/animations/example/lib/fade_scale_transition.dart @@ -19,7 +19,7 @@ class _FadeScaleTransitionDemoState extends State @override void initState() { _controller = AnimationController( - value: 1.0, + value: 0.0, duration: const Duration(milliseconds: 150), reverseDuration: const Duration(milliseconds: 75), vsync: this, From e3c576343e9ec0a0b6d303c95581037acb1c05e5 Mon Sep 17 00:00:00 2001 From: Shi Hao Hong Date: Fri, 10 Apr 2020 15:57:33 -0700 Subject: [PATCH 5/7] Address code review feedback --- .../example/lib/fade_scale_transition.dart | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/packages/animations/example/lib/fade_scale_transition.dart b/packages/animations/example/lib/fade_scale_transition.dart index 577d78c390db..fd6478cc40ba 100644 --- a/packages/animations/example/lib/fade_scale_transition.dart +++ b/packages/animations/example/lib/fade_scale_transition.dart @@ -23,8 +23,12 @@ class _FadeScaleTransitionDemoState extends State duration: const Duration(milliseconds: 150), reverseDuration: const Duration(milliseconds: 75), vsync: this, - )..addListener(() { - setState(() {}); + )..addStatusListener((AnimationStatus status) { + setState(() { + // setState needs to be called to trigger a rebuild because + // the 'HIDE FAB'/'SHOW FAB' button needs to be updated based + // the latest value of [_controller.value]. + }); }); super.initState(); } @@ -40,13 +44,11 @@ class _FadeScaleTransitionDemoState extends State case AnimationStatus.forward: case AnimationStatus.completed: return true; - break; case AnimationStatus.reverse: case AnimationStatus.dismissed: return false; - break; } - assert(true); + assert(false); return null; } @@ -63,7 +65,7 @@ class _FadeScaleTransitionDemoState extends State ); }, child: Visibility( - visible: _controller.value != 0, + visible: _controller.status != AnimationStatus.dismissed, child: FloatingActionButton( child: const Icon(Icons.add), onPressed: () {}, From 5587e220d4a76aff3e30b2bcbbd33ffdcc0b418e Mon Sep 17 00:00:00 2001 From: Shi Hao Hong Date: Fri, 10 Apr 2020 16:03:03 -0700 Subject: [PATCH 6/7] _controller.value -> _controller.status --- packages/animations/example/lib/fade_scale_transition.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/animations/example/lib/fade_scale_transition.dart b/packages/animations/example/lib/fade_scale_transition.dart index fd6478cc40ba..b18019a90c19 100644 --- a/packages/animations/example/lib/fade_scale_transition.dart +++ b/packages/animations/example/lib/fade_scale_transition.dart @@ -27,7 +27,7 @@ class _FadeScaleTransitionDemoState extends State setState(() { // setState needs to be called to trigger a rebuild because // the 'HIDE FAB'/'SHOW FAB' button needs to be updated based - // the latest value of [_controller.value]. + // the latest value of [_controller.status]. }); }); super.initState(); From 7f17be5b77ac63853cc9fe37d9cc4aa2f4b1ddc9 Mon Sep 17 00:00:00 2001 From: Shi Hao Hong Date: Fri, 10 Apr 2020 17:13:49 -0700 Subject: [PATCH 7/7] Turn isAnimationRunningForwardsOrComplete bool to getter --- packages/animations/example/lib/fade_scale_transition.dart | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/animations/example/lib/fade_scale_transition.dart b/packages/animations/example/lib/fade_scale_transition.dart index b18019a90c19..b4d71458037d 100644 --- a/packages/animations/example/lib/fade_scale_transition.dart +++ b/packages/animations/example/lib/fade_scale_transition.dart @@ -39,7 +39,7 @@ class _FadeScaleTransitionDemoState extends State super.dispose(); } - bool isAnimationRunningForwardsOrComplete() { + bool get _isAnimationRunningForwardsOrComplete { switch (_controller.status) { case AnimationStatus.forward: case AnimationStatus.completed: @@ -98,7 +98,7 @@ class _FadeScaleTransitionDemoState extends State const SizedBox(width: 10), RaisedButton( onPressed: () { - if (isAnimationRunningForwardsOrComplete()) { + if (_isAnimationRunningForwardsOrComplete) { _controller.reverse(); } else { _controller.forward(); @@ -106,7 +106,7 @@ class _FadeScaleTransitionDemoState extends State }, color: Theme.of(context).colorScheme.primary, textColor: Theme.of(context).colorScheme.onPrimary, - child: isAnimationRunningForwardsOrComplete() + child: _isAnimationRunningForwardsOrComplete ? const Text('HIDE FAB') : const Text('SHOW FAB'), ),