From a6d89f1d0c5927b9a7f686db9d3d3ae8b4c1fc26 Mon Sep 17 00:00:00 2001 From: Igor Kulikov Date: Fri, 4 Jun 2021 20:17:59 +0300 Subject: [PATCH] Use animated icon to switch dashboard right layout --- .../dashboard/main_dashboard_page.dart | 30 +++++++++++++------ 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/lib/modules/dashboard/main_dashboard_page.dart b/lib/modules/dashboard/main_dashboard_page.dart index 6d1590c..fdb56b7 100644 --- a/lib/modules/dashboard/main_dashboard_page.dart +++ b/lib/modules/dashboard/main_dashboard_page.dart @@ -60,16 +60,25 @@ class MainDashboardPage extends TbContextWidget { +class _MainDashboardPageState extends TbContextState with TickerProviderStateMixin { late ValueNotifier dashboardTitleValue; final ValueNotifier hasRightLayout = ValueNotifier(false); - final ValueNotifier rightLayoutOpened = ValueNotifier(false); DashboardController? _dashboardController; + late final Animation rightLayoutMenuAnimation; + late final AnimationController rightLayoutMenuController; @override void initState() { super.initState(); + rightLayoutMenuController = AnimationController( + vsync: this, + duration: Duration(milliseconds: 200), + ); + rightLayoutMenuAnimation = CurvedAnimation( + curve: Curves.linear, + parent: rightLayoutMenuController + ); if (widget._controller != null) { widget._controller!._setMainDashboardPageState(this); } @@ -78,6 +87,7 @@ class _MainDashboardPageState extends TbContextState _dashboardController?.toggleRightLayout(), - icon: ValueListenableBuilder( - valueListenable: rightLayoutOpened, - builder: (context, _rightLayoutOpened, widget) { - return Icon(_rightLayoutOpened ? Icons.arrow_back : Icons.menu); - } + icon: AnimatedIcon( + progress: rightLayoutMenuAnimation, + icon: AnimatedIcons.menu_close ) ); } else { @@ -143,7 +151,11 @@ class _MainDashboardPageState extends TbContextState