replace route pages with cupertino ones

This commit is contained in:
shilangyu 2020-09-16 22:53:04 +02:00
parent fc52ce91a8
commit d3eee1e837
8 changed files with 54 additions and 38 deletions

View File

@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_mobx/flutter_mobx.dart'; import 'package:flutter_mobx/flutter_mobx.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'pages/instance.dart';
import 'stores/accounts_store.dart'; import 'stores/accounts_store.dart';
import 'stores/config_store.dart'; import 'stores/config_store.dart';
@ -51,7 +52,9 @@ class MyApp extends StatelessWidget {
theme: ThemeData( theme: ThemeData(
visualDensity: VisualDensity.adaptivePlatformDensity, visualDensity: VisualDensity.adaptivePlatformDensity,
), ),
home: MyHomePage(title: 'Flutter hello world'), home: InstancePage(
instanceUrl: 'dev.lemmy.ml',
),
); );
}, },
); );

View File

@ -1,5 +1,6 @@
import 'package:cached_network_image/cached_network_image.dart'; import 'package:cached_network_image/cached_network_image.dart';
import 'package:esys_flutter_share/esys_flutter_share.dart'; import 'package:esys_flutter_share/esys_flutter_share.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:intl/intl.dart'; import 'package:intl/intl.dart';
@ -272,10 +273,11 @@ class _AboutTab extends HookWidget {
} }
void goToBannedUsers(BuildContext c) { void goToBannedUsers(BuildContext c) {
Navigator.of(c).push(MaterialPageRoute( goTo(
builder: (_) => UsersListPage( c,
(_) => UsersListPage(
users: site.banned.reversed.toList(), title: 'Banned users'), users: site.banned.reversed.toList(), title: 'Banned users'),
)); );
} }
@override @override
@ -284,11 +286,12 @@ class _AboutTab extends HookWidget {
final commSnap = useFuture(communitiesFuture); final commSnap = useFuture(communitiesFuture);
void goToCommunities() { void goToCommunities() {
Navigator.of(context).push(MaterialPageRoute( goTo(
builder: (_) => CommunitiesListPage( context,
(_) => CommunitiesListPage(
communities: commSnap.data, communities: commSnap.data,
title: 'Communities of ${site.site.name}'), title: 'Communities of ${site.site.name}'),
)); );
} }
return SingleChildScrollView( return SingleChildScrollView(

View File

@ -1,3 +1,4 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:flutter_mobx/flutter_mobx.dart'; import 'package:flutter_mobx/flutter_mobx.dart';
@ -5,6 +6,7 @@ import 'package:provider/provider.dart';
import '../stores/accounts_store.dart'; import '../stores/accounts_store.dart';
import '../util/api_extensions.dart'; import '../util/api_extensions.dart';
import '../util/goto.dart';
import '../widgets/bottom_modal.dart'; import '../widgets/bottom_modal.dart';
import '../widgets/user_profile.dart'; import '../widgets/user_profile.dart';
import 'settings.dart'; import 'settings.dart';
@ -27,8 +29,7 @@ class UserProfileTab extends HookWidget {
Text('No account was added.'), Text('No account was added.'),
FlatButton.icon( FlatButton.icon(
onPressed: () { onPressed: () {
Navigator.of(context).push(MaterialPageRoute( goTo(context, (_) => AccountsConfigPage());
builder: (_) => AccountsConfigPage()));
}, },
icon: Icon(Icons.add), icon: Icon(Icons.add),
label: Text('Add account'), label: Text('Add account'),
@ -113,8 +114,7 @@ class UserProfileTab extends HookWidget {
IconButton( IconButton(
icon: Icon(Icons.settings), icon: Icon(Icons.settings),
onPressed: () { onPressed: () {
Navigator.of(context) goTo(context, (_) => SettingsPage());
.push(MaterialPageRoute(builder: (_) => SettingsPage()));
}, },
) )
], ],

View File

@ -1,3 +1,4 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:flutter_mobx/flutter_mobx.dart'; import 'package:flutter_mobx/flutter_mobx.dart';
@ -5,6 +6,7 @@ import 'package:provider/provider.dart';
import '../stores/accounts_store.dart'; import '../stores/accounts_store.dart';
import '../stores/config_store.dart'; import '../stores/config_store.dart';
import '../util/goto.dart';
class SettingsPage extends StatelessWidget { class SettingsPage extends StatelessWidget {
@override @override
@ -26,16 +28,14 @@ class SettingsPage extends StatelessWidget {
leading: Icon(Icons.person), leading: Icon(Icons.person),
title: Text('Accounts'), title: Text('Accounts'),
onTap: () { onTap: () {
Navigator.of(context).push( goTo(context, (_) => AccountsConfigPage());
MaterialPageRoute(builder: (_) => AccountsConfigPage()));
}, },
), ),
ListTile( ListTile(
leading: Icon(Icons.color_lens), leading: Icon(Icons.color_lens),
title: Text('Appearance'), title: Text('Appearance'),
onTap: () { onTap: () {
Navigator.of(context).push( goTo(context, (_) => AppearanceConfigPage());
MaterialPageRoute(builder: (_) => AppearanceConfigPage()));
}, },
) )
], ],

View File

@ -1,3 +1,4 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:url_launcher/url_launcher.dart' as ul; import 'package:url_launcher/url_launcher.dart' as ul;
@ -7,6 +8,7 @@ import 'pages/full_post.dart';
import 'pages/instance.dart'; import 'pages/instance.dart';
import 'pages/user.dart'; import 'pages/user.dart';
import 'stores/accounts_store.dart'; import 'stores/accounts_store.dart';
import 'util/goto.dart';
Future<void> linkLauncher({ Future<void> linkLauncher({
@required BuildContext context, @required BuildContext context,
@ -14,7 +16,7 @@ Future<void> linkLauncher({
@required String instanceUrl, @required String instanceUrl,
}) async { }) async {
push(Widget Function() builder) { push(Widget Function() builder) {
Navigator.of(context).push(MaterialPageRoute(builder: (c) => builder())); goTo(context, (c) => builder());
} }
final instances = context.read<AccountsStore>().users.keys.toList(); final instances = context.read<AccountsStore>().users.keys.toList();

View File

@ -1,3 +1,4 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import '../pages/community.dart'; import '../pages/community.dart';
@ -5,41 +6,46 @@ import '../pages/full_post.dart';
import '../pages/instance.dart'; import '../pages/instance.dart';
import '../pages/user.dart'; import '../pages/user.dart';
void goToInstance(BuildContext context, String instanceUrl) => Future<dynamic> goTo(
Navigator.of(context).push(MaterialPageRoute( BuildContext context,
builder: (context) => InstancePage(instanceUrl: instanceUrl), 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 // ignore: camel_case_types
abstract class goToCommunity { abstract class goToCommunity {
/// Navigates to `CommunityPage` /// Navigates to `CommunityPage`
static void byId(BuildContext context, String instanceUrl, int communityId) => static void byId(BuildContext context, String instanceUrl, int communityId) =>
Navigator.of(context).push(MaterialPageRoute( goTo(
builder: (context) => CommunityPage.fromId( context,
(context) => CommunityPage.fromId(
instanceUrl: instanceUrl, communityId: communityId), instanceUrl: instanceUrl, communityId: communityId),
)); );
static void byName( static void byName(
BuildContext context, String instanceUrl, String communityName) => BuildContext context, String instanceUrl, String communityName) =>
Navigator.of(context).push(MaterialPageRoute( goTo(
builder: (context) => CommunityPage.fromName( context,
(context) => CommunityPage.fromName(
instanceUrl: instanceUrl, communityName: communityName), instanceUrl: instanceUrl, communityName: communityName),
)); );
} }
// ignore: camel_case_types // ignore: camel_case_types
abstract class goToUser { abstract class goToUser {
static void byId(BuildContext context, String instanceUrl, int userId) => static void byId(BuildContext context, String instanceUrl, int userId) =>
Navigator.of(context).push(MaterialPageRoute( goTo(context,
builder: (context) => (context) => UserPage(instanceUrl: instanceUrl, userId: userId));
UserPage(instanceUrl: instanceUrl, userId: userId)));
static void byName( static void byName(
BuildContext context, String instanceUrl, String userName) => BuildContext context, String instanceUrl, String userName) =>
throw UnimplementedError('need to create UserProfile constructor first'); throw UnimplementedError('need to create UserProfile constructor first');
} }
void goToPost(BuildContext context, String instanceUrl, int postId) => void goToPost(BuildContext context, String instanceUrl, int postId) => goTo(
Navigator.of(context).push(MaterialPageRoute( context, (context) => FullPostPage(instanceUrl: instanceUrl, id: postId));
builder: (context) =>
FullPostPage(instanceUrl: instanceUrl, id: postId)));

View File

@ -1,6 +1,8 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import '../pages/media_view.dart'; import '../pages/media_view.dart';
import '../util/goto.dart';
class FullscreenableImage extends StatelessWidget { class FullscreenableImage extends StatelessWidget {
final String url; final String url;
@ -13,9 +15,7 @@ class FullscreenableImage extends StatelessWidget {
}) : super(key: key); }) : super(key: key);
_onTap(BuildContext c) { _onTap(BuildContext c) {
Navigator.of(c).push(MaterialPageRoute( goTo(c, (context) => MediaViewPage(url));
builder: (context) => MediaViewPage(url),
));
} }
@override @override

View File

@ -1,5 +1,6 @@
import 'package:cached_network_image/cached_network_image.dart'; import 'package:cached_network_image/cached_network_image.dart';
import 'package:esys_flutter_share/esys_flutter_share.dart'; import 'package:esys_flutter_share/esys_flutter_share.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/gestures.dart'; import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:intl/intl.dart'; import 'package:intl/intl.dart';
@ -425,9 +426,10 @@ class Post extends StatelessWidget {
child: InkWell( child: InkWell(
onTap: fullPost onTap: fullPost
? null ? null
: () => Navigator.of(context).push(MaterialPageRoute( : () => goTo(
builder: (context) => FullPostPage.fromPostView( context,
post))), //, instanceUrl, post.id), (context) =>
FullPostPage.fromPostView(post)), //, instanceUrl, post.id),
child: Column( child: Column(
children: [ children: [
info(), info(),