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/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/ui/screens/progress_creation_screen.dart';
import 'package:time_progress_tracker/utils/helper_functions.dart';
class CreateProgressButton extends StatelessWidget { class CreateProgressButton extends StatelessWidget {
final String _heroTag = "createProgressBTN"; final String _heroTag = "createProgressBTN";
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
void _onButtonPressed() => void _onButtonPressed() => Navigator.push(
Navigator.pushNamed(context, ProgressCreationScreen.routeName); context,
platformPageRoute(
context: context,
builder: (context) => ProgressCreationScreen(),
));
return FloatingActionButton( Widget _renderCupertino() {
heroTag: _heroTag, return PlatformButton(
child: Icon(Icons.add), padding: EdgeInsets.all(4),
onPressed: _onButtonPressed, 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/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/create_progress_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/settings_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 @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return PlatformScaffold( return PlatformScaffold(
@ -50,9 +54,12 @@ class _DashboardScreenState extends State<DashboardScreen> {
), ),
cupertino: (_, __) => CupertinoNavigationBarData( cupertino: (_, __) => CupertinoNavigationBarData(
transitionBetweenRoutes: false, transitionBetweenRoutes: false,
leading: _renderCreateProgressBtn(),
), ),
), ),
material: (_, __) => MaterialScaffoldData(), material: (_, __) => MaterialScaffoldData(
floatingActionButton: _renderCreateProgressBtn(),
),
body: _renderTabScreen(_tabSelectedIndex), body: _renderTabScreen(_tabSelectedIndex),
bottomNavBar: PlatformNavBar( bottomNavBar: PlatformNavBar(
currentIndex: _tabSelectedIndex, currentIndex: _tabSelectedIndex,

View File

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