Ported Create Progress Button for Platform Aware

Signed-off-by: Andreas Fahrecker <AndreasFahrecker@gmail.com>
This commit is contained in:
Andreas Fahrecker 2021-03-16 15:14:56 +01:00
parent e889f93d5c
commit 45d4f7ba3a
3 changed files with 44 additions and 9 deletions

View File

@ -1,18 +1,39 @@
import 'package:flutter/material.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 CreateProgressButton extends StatelessWidget {
final String _heroTag = "createProgressBTN";
@override
Widget build(BuildContext context) {
void _onButtonPressed() =>
Navigator.pushNamed(context, ProgressCreationScreen.routeName);
void _onButtonPressed() => Navigator.push(
context,
platformPageRoute(
context: context,
builder: (context) => ProgressCreationScreen(),
));
return FloatingActionButton(
heroTag: _heroTag,
child: Icon(Icons.add),
onPressed: _onButtonPressed,
);
Widget _renderCupertino() {
return PlatformButton(
padding: EdgeInsets.all(4),
child: Icon(
Icons.add,
color: Colors.white,
),
onPressed: _onButtonPressed,
);
}
Widget _renderMaterial() {
return FloatingActionButton(
heroTag: _heroTag,
child: Icon(Icons.add),
onPressed: _onButtonPressed,
);
}
return useCupertino() ? _renderCupertino() : _renderMaterial();
}
}

View File

@ -1,6 +1,7 @@
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/create_progress_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/settings_screen.dart';
@ -40,6 +41,9 @@ class _DashboardScreenState extends State<DashboardScreen> {
}
}
Widget _renderCreateProgressBtn() =>
_tabSelectedIndex == 2 ? null : CreateProgressButton();
@override
Widget build(BuildContext context) {
return PlatformScaffold(
@ -50,9 +54,12 @@ class _DashboardScreenState extends State<DashboardScreen> {
),
cupertino: (_, __) => CupertinoNavigationBarData(
transitionBetweenRoutes: false,
leading: _renderCreateProgressBtn(),
),
),
material: (_, __) => MaterialScaffoldData(),
material: (_, __) => MaterialScaffoldData(
floatingActionButton: _renderCreateProgressBtn(),
),
body: _renderTabScreen(_tabSelectedIndex),
bottomNavBar: PlatformNavBar(
currentIndex: _tabSelectedIndex,

View File

@ -1,5 +1,7 @@
import 'dart:io' show Platform;
import 'dart:ui';
import 'package:flutter/foundation.dart';
import 'package:redux/redux.dart';
import 'package:time_progress_tracker/models/time_progress.dart';
import 'package:time_progress_tracker/redux/actions/app_settings_actions.dart';
@ -28,3 +30,8 @@ bool useBrightBackground(Color bC) {
double yiq = ((bC.red * 299) + (bC.green * 587) + (bC.blue * 114)) / 1000;
return yiq >= 186 || (bC.red == 0 && bC.green == 0 && bC.blue == 0);
}
bool useCupertino() {
if (kIsWeb) return false;
return Platform.isIOS;
}