From d3eee1e837358a369d7d8110fefa50ce678e1a5e Mon Sep 17 00:00:00 2001 From: shilangyu Date: Wed, 16 Sep 2020 22:53:04 +0200 Subject: [PATCH] replace route pages with cupertino ones --- lib/main.dart | 5 +++- lib/pages/instance.dart | 15 ++++++----- lib/pages/profile_tab.dart | 8 +++--- lib/pages/settings.dart | 8 +++--- lib/url_launcher.dart | 4 ++- lib/util/goto.dart | 38 ++++++++++++++++----------- lib/widgets/fullscreenable_image.dart | 6 ++--- lib/widgets/post.dart | 8 +++--- 8 files changed, 54 insertions(+), 38 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index bc4056b..03c5d86 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_mobx/flutter_mobx.dart'; import 'package:provider/provider.dart'; +import 'pages/instance.dart'; import 'stores/accounts_store.dart'; import 'stores/config_store.dart'; @@ -51,7 +52,9 @@ class MyApp extends StatelessWidget { theme: ThemeData( visualDensity: VisualDensity.adaptivePlatformDensity, ), - home: MyHomePage(title: 'Flutter hello world'), + home: InstancePage( + instanceUrl: 'dev.lemmy.ml', + ), ); }, ); diff --git a/lib/pages/instance.dart b/lib/pages/instance.dart index d8ec37f..0877956 100644 --- a/lib/pages/instance.dart +++ b/lib/pages/instance.dart @@ -1,5 +1,6 @@ import 'package:cached_network_image/cached_network_image.dart'; import 'package:esys_flutter_share/esys_flutter_share.dart'; +import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:intl/intl.dart'; @@ -272,10 +273,11 @@ class _AboutTab extends HookWidget { } void goToBannedUsers(BuildContext c) { - Navigator.of(c).push(MaterialPageRoute( - builder: (_) => UsersListPage( + goTo( + c, + (_) => UsersListPage( users: site.banned.reversed.toList(), title: 'Banned users'), - )); + ); } @override @@ -284,11 +286,12 @@ class _AboutTab extends HookWidget { final commSnap = useFuture(communitiesFuture); void goToCommunities() { - Navigator.of(context).push(MaterialPageRoute( - builder: (_) => CommunitiesListPage( + goTo( + context, + (_) => CommunitiesListPage( communities: commSnap.data, title: 'Communities of ${site.site.name}'), - )); + ); } return SingleChildScrollView( diff --git a/lib/pages/profile_tab.dart b/lib/pages/profile_tab.dart index 0d6a2c7..bdddc34 100644 --- a/lib/pages/profile_tab.dart +++ b/lib/pages/profile_tab.dart @@ -1,3 +1,4 @@ +import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:flutter_mobx/flutter_mobx.dart'; @@ -5,6 +6,7 @@ import 'package:provider/provider.dart'; import '../stores/accounts_store.dart'; import '../util/api_extensions.dart'; +import '../util/goto.dart'; import '../widgets/bottom_modal.dart'; import '../widgets/user_profile.dart'; import 'settings.dart'; @@ -27,8 +29,7 @@ class UserProfileTab extends HookWidget { Text('No account was added.'), FlatButton.icon( onPressed: () { - Navigator.of(context).push(MaterialPageRoute( - builder: (_) => AccountsConfigPage())); + goTo(context, (_) => AccountsConfigPage()); }, icon: Icon(Icons.add), label: Text('Add account'), @@ -113,8 +114,7 @@ class UserProfileTab extends HookWidget { IconButton( icon: Icon(Icons.settings), onPressed: () { - Navigator.of(context) - .push(MaterialPageRoute(builder: (_) => SettingsPage())); + goTo(context, (_) => SettingsPage()); }, ) ], diff --git a/lib/pages/settings.dart b/lib/pages/settings.dart index 6ac555e..673c1b9 100644 --- a/lib/pages/settings.dart +++ b/lib/pages/settings.dart @@ -1,3 +1,4 @@ +import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:flutter_mobx/flutter_mobx.dart'; @@ -5,6 +6,7 @@ import 'package:provider/provider.dart'; import '../stores/accounts_store.dart'; import '../stores/config_store.dart'; +import '../util/goto.dart'; class SettingsPage extends StatelessWidget { @override @@ -26,16 +28,14 @@ class SettingsPage extends StatelessWidget { leading: Icon(Icons.person), title: Text('Accounts'), onTap: () { - Navigator.of(context).push( - MaterialPageRoute(builder: (_) => AccountsConfigPage())); + goTo(context, (_) => AccountsConfigPage()); }, ), ListTile( leading: Icon(Icons.color_lens), title: Text('Appearance'), onTap: () { - Navigator.of(context).push( - MaterialPageRoute(builder: (_) => AppearanceConfigPage())); + goTo(context, (_) => AppearanceConfigPage()); }, ) ], diff --git a/lib/url_launcher.dart b/lib/url_launcher.dart index b6ab848..4f520b4 100644 --- a/lib/url_launcher.dart +++ b/lib/url_launcher.dart @@ -1,3 +1,4 @@ +import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:url_launcher/url_launcher.dart' as ul; @@ -7,6 +8,7 @@ import 'pages/full_post.dart'; import 'pages/instance.dart'; import 'pages/user.dart'; import 'stores/accounts_store.dart'; +import 'util/goto.dart'; Future linkLauncher({ @required BuildContext context, @@ -14,7 +16,7 @@ Future linkLauncher({ @required String instanceUrl, }) async { push(Widget Function() builder) { - Navigator.of(context).push(MaterialPageRoute(builder: (c) => builder())); + goTo(context, (c) => builder()); } final instances = context.read().users.keys.toList(); diff --git a/lib/util/goto.dart b/lib/util/goto.dart index 885eeaa..2f7f0c7 100644 --- a/lib/util/goto.dart +++ b/lib/util/goto.dart @@ -1,3 +1,4 @@ +import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import '../pages/community.dart'; @@ -5,41 +6,46 @@ import '../pages/full_post.dart'; import '../pages/instance.dart'; import '../pages/user.dart'; -void goToInstance(BuildContext context, String instanceUrl) => - Navigator.of(context).push(MaterialPageRoute( - builder: (context) => InstancePage(instanceUrl: instanceUrl), +Future goTo( + BuildContext context, + Widget Function(BuildContext context) builder, +) => + Navigator.of(context).push(CupertinoPageRoute( + builder: builder, )); +void goToInstance(BuildContext context, String instanceUrl) => + goTo(context, (context) => InstancePage(instanceUrl: instanceUrl)); + // ignore: camel_case_types abstract class goToCommunity { /// Navigates to `CommunityPage` static void byId(BuildContext context, String instanceUrl, int communityId) => - Navigator.of(context).push(MaterialPageRoute( - builder: (context) => CommunityPage.fromId( + goTo( + context, + (context) => CommunityPage.fromId( instanceUrl: instanceUrl, communityId: communityId), - )); + ); static void byName( BuildContext context, String instanceUrl, String communityName) => - Navigator.of(context).push(MaterialPageRoute( - builder: (context) => CommunityPage.fromName( + goTo( + context, + (context) => CommunityPage.fromName( instanceUrl: instanceUrl, communityName: communityName), - )); + ); } // ignore: camel_case_types abstract class goToUser { static void byId(BuildContext context, String instanceUrl, int userId) => - Navigator.of(context).push(MaterialPageRoute( - builder: (context) => - UserPage(instanceUrl: instanceUrl, userId: userId))); + goTo(context, + (context) => UserPage(instanceUrl: instanceUrl, userId: userId)); static void byName( BuildContext context, String instanceUrl, String userName) => throw UnimplementedError('need to create UserProfile constructor first'); } -void goToPost(BuildContext context, String instanceUrl, int postId) => - Navigator.of(context).push(MaterialPageRoute( - builder: (context) => - FullPostPage(instanceUrl: instanceUrl, id: postId))); +void goToPost(BuildContext context, String instanceUrl, int postId) => goTo( + context, (context) => FullPostPage(instanceUrl: instanceUrl, id: postId)); diff --git a/lib/widgets/fullscreenable_image.dart b/lib/widgets/fullscreenable_image.dart index 5f23506..2fb28fb 100644 --- a/lib/widgets/fullscreenable_image.dart +++ b/lib/widgets/fullscreenable_image.dart @@ -1,6 +1,8 @@ +import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import '../pages/media_view.dart'; +import '../util/goto.dart'; class FullscreenableImage extends StatelessWidget { final String url; @@ -13,9 +15,7 @@ class FullscreenableImage extends StatelessWidget { }) : super(key: key); _onTap(BuildContext c) { - Navigator.of(c).push(MaterialPageRoute( - builder: (context) => MediaViewPage(url), - )); + goTo(c, (context) => MediaViewPage(url)); } @override diff --git a/lib/widgets/post.dart b/lib/widgets/post.dart index 40614a9..4f201e2 100644 --- a/lib/widgets/post.dart +++ b/lib/widgets/post.dart @@ -1,5 +1,6 @@ import 'package:cached_network_image/cached_network_image.dart'; import 'package:esys_flutter_share/esys_flutter_share.dart'; +import 'package:flutter/cupertino.dart'; import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; @@ -425,9 +426,10 @@ class Post extends StatelessWidget { child: InkWell( onTap: fullPost ? null - : () => Navigator.of(context).push(MaterialPageRoute( - builder: (context) => FullPostPage.fromPostView( - post))), //, instanceUrl, post.id), + : () => goTo( + context, + (context) => + FullPostPage.fromPostView(post)), //, instanceUrl, post.id), child: Column( children: [ info(),