PageRoutes adaptable machen #145

Merged
flixcoo merged 10 commits from enhancement/128-PageRoutes-adaptable-machen into development 2026-01-10 14:06:10 +00:00
7 changed files with 40 additions and 15 deletions

View File

@@ -0,0 +1,19 @@
import 'dart:io';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
Route<T> adaptivePageRoute<T>({
required Widget Function(BuildContext) builder,
bool fullscreenDialog = false,
}) {
if (Platform.isIOS) {
return CupertinoPageRoute<T>(
builder: builder,
fullscreenDialog: fullscreenDialog,
);
}
return MaterialPageRoute<T>(
builder: builder,
fullscreenDialog: fullscreenDialog,
);
}

View File

@@ -44,6 +44,12 @@ class GameTracker extends StatelessWidget {
seedColor: CustomTheme.primaryColor,
brightness: Brightness.dark,
).copyWith(surface: CustomTheme.backgroundColor),
pageTransitionsTheme: const PageTransitionsTheme(
builders: {
TargetPlatform.iOS: CupertinoPageTransitionsBuilder(),
TargetPlatform.android: PredictiveBackPageTransitionsBuilder(),
},
),
),
home: const CustomNavigationBar(),
);

View File

@@ -1,4 +1,5 @@
import 'package:flutter/material.dart';
import 'package:game_tracker/core/adaptive_page_route.dart';
import 'package:game_tracker/core/custom_theme.dart';
import 'package:game_tracker/l10n/generated/app_localizations.dart';
import 'package:game_tracker/presentation/views/main_menu/group_view/groups_view.dart';
@@ -56,7 +57,7 @@ class _CustomNavigationBarState extends State<CustomNavigationBar>
onPressed: () async {
await Navigator.push(
context,
MaterialPageRoute(builder: (_) => const SettingsView()),
adaptivePageRoute(builder: (_) => const SettingsView()),
);
setState(() {
tabKeyCount++;

View File

@@ -1,4 +1,5 @@
import 'package:flutter/material.dart';
import 'package:game_tracker/core/adaptive_page_route.dart';
import 'package:game_tracker/core/constants.dart';
import 'package:game_tracker/core/custom_theme.dart';
import 'package:game_tracker/data/db/database.dart';
@@ -85,7 +86,7 @@ class _GroupsViewState extends State<GroupsView> {
onPressed: () async {
await Navigator.push(
context,
MaterialPageRoute(
adaptivePageRoute(
builder: (context) {
return const CreateGroupView();
},

View File

@@ -1,5 +1,5 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:game_tracker/core/adaptive_page_route.dart';
import 'package:game_tracker/core/custom_theme.dart';
import 'package:game_tracker/core/enums.dart';
import 'package:game_tracker/data/db/database.dart';
@@ -141,7 +141,7 @@ class _CreateMatchViewState extends State<CreateMatchView> {
: games[selectedGameIndex].$1,
onPressed: () async {
selectedGameIndex = await Navigator.of(context).push(
MaterialPageRoute(
adaptivePageRoute(
builder: (context) => ChooseGameView(
games: games,
initialGameIndex: selectedGameIndex,
@@ -169,7 +169,7 @@ class _CreateMatchViewState extends State<CreateMatchView> {
: translateRulesetToString(selectedRuleset!, context),
onPressed: () async {
selectedRuleset = await Navigator.of(context).push(
MaterialPageRoute(
adaptivePageRoute(
builder: (context) => ChooseRulesetView(
rulesets: _rulesets,
initialRulesetIndex: selectedRulesetIndex,
@@ -191,7 +191,7 @@ class _CreateMatchViewState extends State<CreateMatchView> {
: selectedGroup!.name,
onPressed: () async {
selectedGroup = await Navigator.of(context).push(
MaterialPageRoute(
adaptivePageRoute(
builder: (context) => ChooseGroupView(
groups: groupsList,
initialGroupId: selectedGroupId,
@@ -241,7 +241,7 @@ class _CreateMatchViewState extends State<CreateMatchView> {
if (context.mounted) {
Navigator.pushReplacement(
context,
CupertinoPageRoute(
adaptivePageRoute(
fullscreenDialog: true,
builder: (context) => MatchResultView(
match: match,

View File

@@ -1,7 +1,6 @@
import 'dart:core' hide Match;
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:game_tracker/core/adaptive_page_route.dart';
import 'package:game_tracker/core/constants.dart';
import 'package:game_tracker/core/custom_theme.dart';
import 'package:game_tracker/data/db/database.dart';
@@ -82,7 +81,7 @@ class _MatchViewState extends State<MatchView> {
onTap: () async {
Navigator.push(
context,
CupertinoPageRoute(
adaptivePageRoute(
fullscreenDialog: true,
builder: (context) => MatchResultView(
match: matches[index],
@@ -105,10 +104,9 @@ class _MatchViewState extends State<MatchView> {
onPressed: () async {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) =>
CreateMatchView(onWinnerChanged: loadGames),
),
adaptivePageRoute(
builder: (context) =>
CreateMatchView(onWinnerChanged: loadGames))
);
},
),

View File

@@ -1,7 +1,7 @@
name: game_tracker
description: "Game Tracking App for Card Games"
publish_to: 'none'
version: 0.0.1+21
version: 0.0.1+37
environment:
sdk: ^3.8.1