From cc45894a0706179fc3f1914ba2492db88b990d11 Mon Sep 17 00:00:00 2001 From: Vishesh Handa Date: Fri, 8 May 2020 17:53:59 +0200 Subject: [PATCH] Simplify page transition code This way each time we can just use pushNamed instead of having to construct the MaterialPageRoute each time. --- lib/app.dart | 53 ++++++++++++++++++++++++++++++------- lib/widgets/app_drawer.dart | 20 ++------------ pubspec.lock | 7 ----- pubspec.yaml | 1 - 4 files changed, 45 insertions(+), 36 deletions(-) diff --git a/lib/app.dart b/lib/app.dart index 93cbeea1..ccba8f9a 100644 --- a/lib/app.dart +++ b/lib/app.dart @@ -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: [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; + } } diff --git a/lib/widgets/app_drawer.dart b/lib/widgets/app_drawer.dart index ff33e8ef..7e31fbb8 100644 --- a/lib/widgets/app_drawer.dart +++ b/lib/widgets/app_drawer.dart @@ -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'); } } }, diff --git a/pubspec.lock b/pubspec.lock index e768d1af..dcb651a6 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -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: diff --git a/pubspec.yaml b/pubspec.yaml index 09b10218..625f8632 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -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: