Simplify page transition code

This way each time we can just use pushNamed instead of having to
construct the MaterialPageRoute each time.
This commit is contained in:
Vishesh Handa
2020-05-08 17:53:59 +02:00
parent dea5ba3479
commit cc45894a07
4 changed files with 45 additions and 36 deletions

View File

@ -4,6 +4,7 @@ import 'package:device_info/device_info.dart';
import 'package:firebase_analytics/observer.dart';
import 'package:flutter/material.dart';
import 'package:gitjournal/analytics.dart';
import 'package:gitjournal/screens/folder_listing.dart';
import 'package:gitjournal/screens/purchase_screen.dart';
import 'package:gitjournal/screens/purchase_thankyou_screen.dart';
import 'package:gitjournal/utils/logger.dart';
@ -154,18 +155,50 @@ class JournalApp extends StatelessWidget {
theme: themeData,
navigatorObservers: <NavigatorObserver>[JournalApp.observer],
initialRoute: initialRoute,
routes: {
'/': (context) => HomeScreen(),
'/settings': (context) => SettingsScreen(),
'/setupRemoteGit': (context) =>
GitHostSetupScreen(stateContainer.completeGitHostSetup),
'/onBoarding': (context) =>
OnBoardingScreen(stateContainer.completeOnBoarding),
'/purchase': (context) => PurchaseScreen(),
'/purchase_thank_you': (context) => PurchaseThankYouScreen(),
},
debugShowCheckedModeBanner: false,
//debugShowMaterialGrid: true,
onGenerateRoute: (settings) {
if (settings.name == '/folders') {
return PageRouteBuilder(
settings: settings,
pageBuilder: (_, __, ___) =>
_screenForRoute(settings.name, stateContainer),
transitionsBuilder: (_, anim, __, child) {
return FadeTransition(opacity: anim, child: child);
},
);
}
return MaterialPageRoute(
settings: settings,
builder: (context) => _screenForRoute(
settings.name,
stateContainer,
),
);
},
);
}
Widget _screenForRoute(String route, StateContainer stateContainer) {
switch (route) {
case '/':
return HomeScreen();
case '/folders':
return FolderListingScreen();
case '/settings':
return SettingsScreen();
case '/setupRemoteGit':
return GitHostSetupScreen(stateContainer.completeGitHostSetup);
case '/onBoarding':
return OnBoardingScreen(stateContainer.completeOnBoarding);
case '/purchase':
return PurchaseScreen();
case '/purchase_thank_you':
return PurchaseThankYouScreen();
}
assert(false, "Not found named route in _screenForRoute");
return null;
}
}

View File

@ -8,13 +8,11 @@ import 'package:launch_review/launch_review.dart';
import 'package:provider/provider.dart';
import 'package:share/share.dart';
import 'package:url_launcher/url_launcher.dart';
import 'package:page_transition/page_transition.dart';
import 'package:fetch_app_logs/fetch_app_logs.dart';
import 'package:gitjournal/analytics.dart';
import 'package:gitjournal/state_container.dart';
import 'package:gitjournal/utils.dart';
import 'package:gitjournal/screens/folder_listing.dart';
class AppDrawer extends StatelessWidget {
@override
@ -105,14 +103,7 @@ class AppDrawer extends StatelessWidget {
var m = ModalRoute.of(context);
if (m.settings.name == '/') {
Navigator.pop(context);
Navigator.push(
context,
PageTransition(
type: PageTransitionType.fade,
child: FolderListingScreen(),
settings: const RouteSettings(name: '/folders'),
),
);
Navigator.pushNamed(context, '/folders');
} else if (m.settings.name == '/folders') {
Navigator.pop(context);
} else {
@ -126,14 +117,7 @@ class AppDrawer extends StatelessWidget {
},
);
if (!wasParent) {
Navigator.push(
context,
PageTransition(
type: PageTransitionType.fade,
child: FolderListingScreen(),
settings: const RouteSettings(name: '/folders'),
),
);
Navigator.pushNamed(context, '/folders');
}
}
},

View File

@ -553,13 +553,6 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.10"
page_transition:
dependency: "direct main"
description:
name: page_transition
url: "https://pub.dartlang.org"
source: hosted
version: "1.1.5"
path:
dependency: "direct main"
description:

View File

@ -29,7 +29,6 @@ dependencies:
fimber: ^0.3.0
dynamic_theme: ^1.0.0
flutter_staggered_grid_view: ^0.3.0
page_transition: "^1.1.5"
provider: ^3.2.0
git_bindings: ^0.0.12
dart_git: