mirror of
https://github.com/GitJournal/GitJournal.git
synced 2025-06-29 18:38:36 +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:firebase_analytics/observer.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:gitjournal/analytics.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_screen.dart';
|
||||||
import 'package:gitjournal/screens/purchase_thankyou_screen.dart';
|
import 'package:gitjournal/screens/purchase_thankyou_screen.dart';
|
||||||
import 'package:gitjournal/utils/logger.dart';
|
import 'package:gitjournal/utils/logger.dart';
|
||||||
@ -154,18 +155,50 @@ class JournalApp extends StatelessWidget {
|
|||||||
theme: themeData,
|
theme: themeData,
|
||||||
navigatorObservers: <NavigatorObserver>[JournalApp.observer],
|
navigatorObservers: <NavigatorObserver>[JournalApp.observer],
|
||||||
initialRoute: initialRoute,
|
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,
|
debugShowCheckedModeBanner: false,
|
||||||
//debugShowMaterialGrid: true,
|
//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:provider/provider.dart';
|
||||||
import 'package:share/share.dart';
|
import 'package:share/share.dart';
|
||||||
import 'package:url_launcher/url_launcher.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:fetch_app_logs/fetch_app_logs.dart';
|
||||||
|
|
||||||
import 'package:gitjournal/analytics.dart';
|
import 'package:gitjournal/analytics.dart';
|
||||||
import 'package:gitjournal/state_container.dart';
|
import 'package:gitjournal/state_container.dart';
|
||||||
import 'package:gitjournal/utils.dart';
|
import 'package:gitjournal/utils.dart';
|
||||||
import 'package:gitjournal/screens/folder_listing.dart';
|
|
||||||
|
|
||||||
class AppDrawer extends StatelessWidget {
|
class AppDrawer extends StatelessWidget {
|
||||||
@override
|
@override
|
||||||
@ -105,14 +103,7 @@ class AppDrawer extends StatelessWidget {
|
|||||||
var m = ModalRoute.of(context);
|
var m = ModalRoute.of(context);
|
||||||
if (m.settings.name == '/') {
|
if (m.settings.name == '/') {
|
||||||
Navigator.pop(context);
|
Navigator.pop(context);
|
||||||
Navigator.push(
|
Navigator.pushNamed(context, '/folders');
|
||||||
context,
|
|
||||||
PageTransition(
|
|
||||||
type: PageTransitionType.fade,
|
|
||||||
child: FolderListingScreen(),
|
|
||||||
settings: const RouteSettings(name: '/folders'),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
} else if (m.settings.name == '/folders') {
|
} else if (m.settings.name == '/folders') {
|
||||||
Navigator.pop(context);
|
Navigator.pop(context);
|
||||||
} else {
|
} else {
|
||||||
@ -126,14 +117,7 @@ class AppDrawer extends StatelessWidget {
|
|||||||
},
|
},
|
||||||
);
|
);
|
||||||
if (!wasParent) {
|
if (!wasParent) {
|
||||||
Navigator.push(
|
Navigator.pushNamed(context, '/folders');
|
||||||
context,
|
|
||||||
PageTransition(
|
|
||||||
type: PageTransitionType.fade,
|
|
||||||
child: FolderListingScreen(),
|
|
||||||
settings: const RouteSettings(name: '/folders'),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -553,13 +553,6 @@ packages:
|
|||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.10"
|
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:
|
path:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
@ -29,7 +29,6 @@ dependencies:
|
|||||||
fimber: ^0.3.0
|
fimber: ^0.3.0
|
||||||
dynamic_theme: ^1.0.0
|
dynamic_theme: ^1.0.0
|
||||||
flutter_staggered_grid_view: ^0.3.0
|
flutter_staggered_grid_view: ^0.3.0
|
||||||
page_transition: "^1.1.5"
|
|
||||||
provider: ^3.2.0
|
provider: ^3.2.0
|
||||||
git_bindings: ^0.0.12
|
git_bindings: ^0.0.12
|
||||||
dart_git:
|
dart_git:
|
||||||
|
Reference in New Issue
Block a user