diff --git a/lib/ui/buttons/create_progress_button.dart b/lib/ui/buttons/create_progress_button.dart index 633b252..3de2b25 100644 --- a/lib/ui/buttons/create_progress_button.dart +++ b/lib/ui/buttons/create_progress_button.dart @@ -1,8 +1,6 @@ import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart'; import 'package:flutter_platform_widgets/flutter_platform_widgets.dart'; -import 'package:time_progress_tracker/models/time_progress.dart'; -import 'package:time_progress_tracker/ui/screens/progress_creation_screen.dart'; import 'package:time_progress_tracker/utils/helper_functions.dart'; class CreateProgressButton extends StatelessWidget { diff --git a/lib/ui/buttons/go_to_create_progress_button.dart b/lib/ui/buttons/platform_action_button.dart similarity index 51% rename from lib/ui/buttons/go_to_create_progress_button.dart rename to lib/ui/buttons/platform_action_button.dart index fb56b9c..593231d 100644 --- a/lib/ui/buttons/go_to_create_progress_button.dart +++ b/lib/ui/buttons/platform_action_button.dart @@ -1,36 +1,38 @@ import 'package:flutter/material.dart'; +import 'package:flutter/widgets.dart'; import 'package:flutter_platform_widgets/flutter_platform_widgets.dart'; -import 'package:time_progress_tracker/ui/screens/progress_creation_screen.dart'; import 'package:time_progress_tracker/utils/helper_functions.dart'; -class GoToCreateProgressButton extends StatelessWidget { - final String _heroTag = "createProgressBTN"; +class PlatformActionButton extends StatelessWidget { + final String heroTag; + final IconData icon; + final void Function() onBtnPressed; + + const PlatformActionButton({ + Key key, + @required this.heroTag, + @required this.icon, + @required this.onBtnPressed, + }) : super(key: key); @override Widget build(BuildContext context) { - void _onButtonPressed() => Navigator.push( - context, - platformPageRoute( - context: context, - builder: (context) => ProgressCreationScreen(), - )); - Widget _renderCupertino() { return PlatformButton( padding: EdgeInsets.all(4), child: Icon( - Icons.add, + icon, color: Colors.white, ), - onPressed: _onButtonPressed, + onPressed: onBtnPressed, ); } Widget _renderMaterial() { return FloatingActionButton( - heroTag: _heroTag, - child: Icon(Icons.add), - onPressed: _onButtonPressed, + heroTag: heroTag, + child: Icon(icon), + onPressed: onBtnPressed, ); } diff --git a/lib/ui/screens/dashboard_screen.dart b/lib/ui/screens/dashboard_screen.dart index f7c762b..0c1a8b7 100644 --- a/lib/ui/screens/dashboard_screen.dart +++ b/lib/ui/screens/dashboard_screen.dart @@ -1,9 +1,10 @@ import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart'; import 'package:flutter_platform_widgets/flutter_platform_widgets.dart'; -import 'package:time_progress_tracker/ui/buttons/go_to_create_progress_button.dart'; +import 'package:time_progress_tracker/ui/buttons/platform_action_button.dart'; import 'package:time_progress_tracker/ui/screens/active_time_progresses_screen.dart'; import 'package:time_progress_tracker/ui/screens/inactive_time_progresses_screen.dart'; +import 'package:time_progress_tracker/ui/screens/progress_creation_screen.dart'; import 'package:time_progress_tracker/ui/screens/settings_screen.dart'; import 'package:time_progress_tracker/utils/color_utils.dart'; import 'package:time_progress_tracker/utils/constants.dart'; @@ -41,11 +42,22 @@ class _DashboardScreenState extends State { } } - Widget _renderCreateProgressBtn() => - _tabSelectedIndex == 2 ? null : GoToCreateProgressButton(); - @override Widget build(BuildContext context) { + Widget _renderCreateProgressBtn() => _tabSelectedIndex == 2 + ? null + : PlatformActionButton( + heroTag: "goToCreateTimeProgressBTN", + icon: Icons.add, + onBtnPressed: () => Navigator.push( + context, + platformPageRoute( + context: context, + builder: (context) => ProgressCreationScreen(), + ), + ), + ); + return PlatformScaffold( appBar: PlatformAppBar( title: Text( diff --git a/lib/ui/screens/progress_creation_screen.dart b/lib/ui/screens/progress_creation_screen.dart index 18d22f3..a764721 100644 --- a/lib/ui/screens/progress_creation_screen.dart +++ b/lib/ui/screens/progress_creation_screen.dart @@ -10,6 +10,7 @@ import 'package:time_progress_tracker/redux/app_state.dart'; import 'package:time_progress_tracker/redux/redux_selectors.dart'; import 'package:time_progress_tracker/redux/store_connectors/create_time_progress_store_connector.dart'; import 'package:time_progress_tracker/ui/buttons/create_progress_button.dart'; +import 'package:time_progress_tracker/ui/buttons/platform_action_button.dart'; import 'package:time_progress_tracker/ui/progress/progress_editor_widget.dart'; import 'package:time_progress_tracker/utils/color_utils.dart'; import 'package:time_progress_tracker/utils/helper_functions.dart'; @@ -54,6 +55,14 @@ class _ProgressCreationScreenState extends State { initTimeProgress(TimeProgress.defaultFromDuration( StoreProvider.of(context).state.appSettings.duration)); + Widget _createActionButton = CreateTimeProgressStoreConnector( + loadedBuilder: (context, CreateTimeProgressViewModel vm) => + PlatformActionButton( + heroTag: "createTimeProgressBTN", + icon: Icons.save, + onBtnPressed: () => _onCreateTimeProgress(vm)), + ); + return PlatformScaffold( appBar: PlatformAppBar( title: Text( @@ -62,24 +71,14 @@ class _ProgressCreationScreenState extends State { ), cupertino: (_, __) => CupertinoNavigationBarData( transitionBetweenRoutes: false, - trailing: CreateTimeProgressStoreConnector( - loadedBuilder: (context, CreateTimeProgressViewModel vm) => - CreateProgressButton( - createProgress: () => _onCreateTimeProgress(vm), - ), - ), + trailing: _createActionButton, ), ), material: (_, __) => MaterialScaffoldData( floatingActionButton: Row( children: [ Expanded( - child: CreateTimeProgressStoreConnector( - loadedBuilder: (context, CreateTimeProgressViewModel vm) => - CreateProgressButton( - createProgress: () => _onCreateTimeProgress(vm), - ), - ), + child: _createActionButton, ) ], ),