Created PlatformActionButton

Signed-off-by: Andreas Fahrecker <AndreasFahrecker@gmail.com>
This commit is contained in:
Andreas Fahrecker 2021-03-16 16:46:54 +01:00
parent aabeef6384
commit d6ca3d4270
4 changed files with 44 additions and 33 deletions

View File

@ -1,8 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart'; import 'package:flutter/widgets.dart';
import 'package:flutter_platform_widgets/flutter_platform_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'; import 'package:time_progress_tracker/utils/helper_functions.dart';
class CreateProgressButton extends StatelessWidget { class CreateProgressButton extends StatelessWidget {

View File

@ -1,36 +1,38 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter_platform_widgets/flutter_platform_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'; import 'package:time_progress_tracker/utils/helper_functions.dart';
class GoToCreateProgressButton extends StatelessWidget { class PlatformActionButton extends StatelessWidget {
final String _heroTag = "createProgressBTN"; 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 @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
void _onButtonPressed() => Navigator.push(
context,
platformPageRoute(
context: context,
builder: (context) => ProgressCreationScreen(),
));
Widget _renderCupertino() { Widget _renderCupertino() {
return PlatformButton( return PlatformButton(
padding: EdgeInsets.all(4), padding: EdgeInsets.all(4),
child: Icon( child: Icon(
Icons.add, icon,
color: Colors.white, color: Colors.white,
), ),
onPressed: _onButtonPressed, onPressed: onBtnPressed,
); );
} }
Widget _renderMaterial() { Widget _renderMaterial() {
return FloatingActionButton( return FloatingActionButton(
heroTag: _heroTag, heroTag: heroTag,
child: Icon(Icons.add), child: Icon(icon),
onPressed: _onButtonPressed, onPressed: onBtnPressed,
); );
} }

View File

@ -1,9 +1,10 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart'; import 'package:flutter/widgets.dart';
import 'package:flutter_platform_widgets/flutter_platform_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/active_time_progresses_screen.dart';
import 'package:time_progress_tracker/ui/screens/inactive_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/ui/screens/settings_screen.dart';
import 'package:time_progress_tracker/utils/color_utils.dart'; import 'package:time_progress_tracker/utils/color_utils.dart';
import 'package:time_progress_tracker/utils/constants.dart'; import 'package:time_progress_tracker/utils/constants.dart';
@ -41,11 +42,22 @@ class _DashboardScreenState extends State<DashboardScreen> {
} }
} }
Widget _renderCreateProgressBtn() =>
_tabSelectedIndex == 2 ? null : GoToCreateProgressButton();
@override @override
Widget build(BuildContext context) { 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( return PlatformScaffold(
appBar: PlatformAppBar( appBar: PlatformAppBar(
title: Text( title: Text(

View File

@ -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/redux_selectors.dart';
import 'package:time_progress_tracker/redux/store_connectors/create_time_progress_store_connector.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/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/ui/progress/progress_editor_widget.dart';
import 'package:time_progress_tracker/utils/color_utils.dart'; import 'package:time_progress_tracker/utils/color_utils.dart';
import 'package:time_progress_tracker/utils/helper_functions.dart'; import 'package:time_progress_tracker/utils/helper_functions.dart';
@ -54,6 +55,14 @@ class _ProgressCreationScreenState extends State<ProgressCreationScreen> {
initTimeProgress(TimeProgress.defaultFromDuration( initTimeProgress(TimeProgress.defaultFromDuration(
StoreProvider.of<AppState>(context).state.appSettings.duration)); StoreProvider.of<AppState>(context).state.appSettings.duration));
Widget _createActionButton = CreateTimeProgressStoreConnector(
loadedBuilder: (context, CreateTimeProgressViewModel vm) =>
PlatformActionButton(
heroTag: "createTimeProgressBTN",
icon: Icons.save,
onBtnPressed: () => _onCreateTimeProgress(vm)),
);
return PlatformScaffold( return PlatformScaffold(
appBar: PlatformAppBar( appBar: PlatformAppBar(
title: Text( title: Text(
@ -62,24 +71,14 @@ class _ProgressCreationScreenState extends State<ProgressCreationScreen> {
), ),
cupertino: (_, __) => CupertinoNavigationBarData( cupertino: (_, __) => CupertinoNavigationBarData(
transitionBetweenRoutes: false, transitionBetweenRoutes: false,
trailing: CreateTimeProgressStoreConnector( trailing: _createActionButton,
loadedBuilder: (context, CreateTimeProgressViewModel vm) =>
CreateProgressButton(
createProgress: () => _onCreateTimeProgress(vm),
),
),
), ),
), ),
material: (_, __) => MaterialScaffoldData( material: (_, __) => MaterialScaffoldData(
floatingActionButton: Row( floatingActionButton: Row(
children: [ children: [
Expanded( Expanded(
child: CreateTimeProgressStoreConnector( child: _createActionButton,
loadedBuilder: (context, CreateTimeProgressViewModel vm) =>
CreateProgressButton(
createProgress: () => _onCreateTimeProgress(vm),
),
),
) )
], ],
), ),