mirror of
https://github.com/GitJournal/GitJournal.git
synced 2025-06-29 02:07:39 +08:00
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:
53
lib/app.dart
53
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: <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;
|
||||
}
|
||||
}
|
||||
|
@ -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');
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -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:
|
||||
|
@ -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:
|
||||
|
Reference in New Issue
Block a user