✨ Large screen support
This commit is contained in:
parent
977cc2e524
commit
b913c6a432
171
lib/router.dart
171
lib/router.dart
@ -31,11 +31,49 @@ abstract class AppRouter {
|
|||||||
showSidebar: false,
|
showSidebar: false,
|
||||||
child: child,
|
child: child,
|
||||||
),
|
),
|
||||||
|
routes: [
|
||||||
|
ShellRoute(
|
||||||
|
builder: (context, state, child) => BasicShell(
|
||||||
|
state: state,
|
||||||
|
sidebarFirst: true,
|
||||||
|
showAppBar: false,
|
||||||
|
sidebar: const SocialScreen(),
|
||||||
|
child: child,
|
||||||
|
),
|
||||||
routes: [
|
routes: [
|
||||||
GoRoute(
|
GoRoute(
|
||||||
path: '/',
|
path: '/',
|
||||||
name: 'social',
|
name: 'social',
|
||||||
builder: (context, state) => const SocialScreen(),
|
builder: (context, state) =>
|
||||||
|
SolianTheme.isExtraLargeScreen(context)
|
||||||
|
? const EmptyPagePlaceholder()
|
||||||
|
: const SocialScreen(),
|
||||||
|
),
|
||||||
|
GoRoute(
|
||||||
|
path: '/posts/view/:alias',
|
||||||
|
name: 'postDetail',
|
||||||
|
builder: (context, state) => TitleShell(
|
||||||
|
showAppBar: SolianTheme.isExtraLargeScreen(context),
|
||||||
|
state: state,
|
||||||
|
child: PostDetailScreen(
|
||||||
|
alias: state.pathParameters['alias']!,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
GoRoute(
|
||||||
|
path: '/posts/publish',
|
||||||
|
name: 'postPublishing',
|
||||||
|
builder: (context, state) {
|
||||||
|
final arguments = state.extra as PostPublishingArguments?;
|
||||||
|
return PostPublishingScreen(
|
||||||
|
edit: arguments?.edit,
|
||||||
|
reply: arguments?.reply,
|
||||||
|
repost: arguments?.repost,
|
||||||
|
realm: arguments?.realm,
|
||||||
|
);
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
),
|
),
|
||||||
ShellRoute(
|
ShellRoute(
|
||||||
builder: (context, state, child) => BasicShell(
|
builder: (context, state, child) => BasicShell(
|
||||||
@ -49,7 +87,8 @@ abstract class AppRouter {
|
|||||||
GoRoute(
|
GoRoute(
|
||||||
path: '/chat',
|
path: '/chat',
|
||||||
name: 'chat',
|
name: 'chat',
|
||||||
builder: (context, state) => SolianTheme.isExtraLargeScreen(context)
|
builder: (context, state) =>
|
||||||
|
SolianTheme.isExtraLargeScreen(context)
|
||||||
? const EmptyPagePlaceholder()
|
? const EmptyPagePlaceholder()
|
||||||
: const ChatScreen(),
|
: const ChatScreen(),
|
||||||
),
|
),
|
||||||
@ -92,78 +131,34 @@ abstract class AppRouter {
|
|||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
ShellRoute(
|
||||||
|
builder: (context, state, child) => BasicShell(
|
||||||
|
state: state,
|
||||||
|
sidebarFirst: true,
|
||||||
|
showAppBar: false,
|
||||||
|
sidebar: const RealmListScreen(),
|
||||||
|
child: child,
|
||||||
|
),
|
||||||
|
routes: [
|
||||||
GoRoute(
|
GoRoute(
|
||||||
path: '/realms',
|
path: '/realms',
|
||||||
name: 'realms',
|
name: 'realms',
|
||||||
builder: (context, state) => const RealmListScreen(),
|
builder: (context, state) =>
|
||||||
|
SolianTheme.isExtraLargeScreen(context)
|
||||||
|
? const EmptyPagePlaceholder()
|
||||||
|
: const RealmListScreen(),
|
||||||
),
|
),
|
||||||
GoRoute(
|
|
||||||
path: '/account',
|
|
||||||
name: 'account',
|
|
||||||
builder: (context, state) => const AccountScreen(),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
ShellRoute(
|
|
||||||
builder: (context, state, child) =>
|
|
||||||
BasicShell(state: state, child: child),
|
|
||||||
routes: [
|
|
||||||
GoRoute(
|
|
||||||
path: '/posts/view/:alias',
|
|
||||||
name: 'postDetail',
|
|
||||||
builder: (context, state) => PostDetailScreen(
|
|
||||||
alias: state.pathParameters['alias']!,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
GoRoute(
|
|
||||||
path: '/posts/publish',
|
|
||||||
name: 'postPublishing',
|
|
||||||
builder: (context, state) {
|
|
||||||
final arguments = state.extra as PostPublishingArguments?;
|
|
||||||
return PostPublishingScreen(
|
|
||||||
edit: arguments?.edit,
|
|
||||||
reply: arguments?.reply,
|
|
||||||
repost: arguments?.repost,
|
|
||||||
realm: arguments?.realm,
|
|
||||||
);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
ShellRoute(
|
|
||||||
builder: (context, state, child) =>
|
|
||||||
BasicShell(state: state, child: child),
|
|
||||||
routes: [
|
|
||||||
GoRoute(
|
|
||||||
path: '/account/friend',
|
|
||||||
name: 'accountFriend',
|
|
||||||
builder: (context, state) => const FriendScreen(),
|
|
||||||
),
|
|
||||||
GoRoute(
|
|
||||||
path: '/account/personalize',
|
|
||||||
name: 'accountPersonalize',
|
|
||||||
builder: (context, state) => const PersonalizeScreen(),
|
|
||||||
),
|
|
||||||
GoRoute(
|
|
||||||
path: '/about',
|
|
||||||
name: 'about',
|
|
||||||
builder: (context, state) => const AboutScreen(),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
ShellRoute(
|
|
||||||
builder: (context, state, child) =>
|
|
||||||
BasicShell(state: state, child: child),
|
|
||||||
routes: [
|
|
||||||
GoRoute(
|
GoRoute(
|
||||||
path: '/realms/:alias/detail',
|
path: '/realms/:alias/detail',
|
||||||
name: 'realmDetail',
|
name: 'realmDetail',
|
||||||
builder: (context, state) => RealmDetailScreen(
|
builder: (context, state) => TitleShell(
|
||||||
|
showAppBar: SolianTheme.isExtraLargeScreen(context),
|
||||||
|
state: state,
|
||||||
|
child: RealmDetailScreen(
|
||||||
realm: state.extra as Realm,
|
realm: state.extra as Realm,
|
||||||
alias: state.pathParameters['alias']!,
|
alias: state.pathParameters['alias']!,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
|
||||||
),
|
),
|
||||||
GoRoute(
|
GoRoute(
|
||||||
path: '/realm/organize',
|
path: '/realm/organize',
|
||||||
@ -185,5 +180,55 @@ abstract class AppRouter {
|
|||||||
},
|
},
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
),
|
||||||
|
ShellRoute(
|
||||||
|
builder: (context, state, child) => BasicShell(
|
||||||
|
state: state,
|
||||||
|
sidebarFirst: true,
|
||||||
|
showAppBar: false,
|
||||||
|
sidebar: const AccountScreen(),
|
||||||
|
child: child,
|
||||||
|
),
|
||||||
|
routes: [
|
||||||
|
GoRoute(
|
||||||
|
path: '/account',
|
||||||
|
name: 'account',
|
||||||
|
builder: (context, state) =>
|
||||||
|
SolianTheme.isExtraLargeScreen(context)
|
||||||
|
? const EmptyPagePlaceholder()
|
||||||
|
: const AccountScreen(),
|
||||||
|
),
|
||||||
|
GoRoute(
|
||||||
|
path: '/account/friend',
|
||||||
|
name: 'accountFriend',
|
||||||
|
builder: (context, state) => TitleShell(
|
||||||
|
showAppBar: SolianTheme.isExtraLargeScreen(context),
|
||||||
|
state: state,
|
||||||
|
child: const FriendScreen(),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
GoRoute(
|
||||||
|
path: '/account/personalize',
|
||||||
|
name: 'accountPersonalize',
|
||||||
|
builder: (context, state) => TitleShell(
|
||||||
|
showAppBar: SolianTheme.isExtraLargeScreen(context),
|
||||||
|
state: state,
|
||||||
|
child: const PersonalizeScreen(),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
GoRoute(
|
||||||
|
path: '/about',
|
||||||
|
name: 'about',
|
||||||
|
builder: (context, state) => TitleShell(
|
||||||
|
showAppBar: SolianTheme.isExtraLargeScreen(context),
|
||||||
|
state: state,
|
||||||
|
child: const AboutScreen(),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -12,6 +12,8 @@ class AboutScreen extends StatelessWidget {
|
|||||||
|
|
||||||
return Material(
|
return Material(
|
||||||
color: Theme.of(context).colorScheme.surface,
|
color: Theme.of(context).colorScheme.surface,
|
||||||
|
child: SizedBox(
|
||||||
|
width: double.infinity,
|
||||||
child: Column(
|
child: Column(
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
children: [
|
children: [
|
||||||
@ -64,6 +66,7 @@ class AboutScreen extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -76,7 +76,7 @@ class SolianMessages extends Translations {
|
|||||||
'postInRealm': 'In realm @realm',
|
'postInRealm': 'In realm @realm',
|
||||||
'postDetail': 'Post',
|
'postDetail': 'Post',
|
||||||
'postReplies': 'Replies',
|
'postReplies': 'Replies',
|
||||||
'postPublishing': 'Post post',
|
'postPublishing': 'Post a post',
|
||||||
'postIdentityNotify': 'You will post this post as',
|
'postIdentityNotify': 'You will post this post as',
|
||||||
'postContentPlaceholder': 'What\'s happened?!',
|
'postContentPlaceholder': 'What\'s happened?!',
|
||||||
'postReaction': 'Reactions of the Post',
|
'postReaction': 'Reactions of the Post',
|
||||||
|
@ -1,13 +1,15 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:get/get.dart';
|
|
||||||
|
|
||||||
class EmptyPagePlaceholder extends StatelessWidget {
|
class EmptyPagePlaceholder extends StatelessWidget {
|
||||||
const EmptyPagePlaceholder({super.key});
|
const EmptyPagePlaceholder({super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Center(
|
return Material(
|
||||||
|
color: Theme.of(context).colorScheme.surface,
|
||||||
|
child: Center(
|
||||||
child: Image.asset('assets/logo.png', width: 80, height: 80),
|
child: Image.asset('assets/logo.png', width: 80, height: 80),
|
||||||
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,13 +1,15 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:get/get.dart';
|
|
||||||
|
|
||||||
class SidebarPlaceholder extends StatelessWidget {
|
class SidebarPlaceholder extends StatelessWidget {
|
||||||
const SidebarPlaceholder({super.key});
|
const SidebarPlaceholder({super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return const Center(
|
return Material(
|
||||||
|
color: Theme.of(context).colorScheme.surface,
|
||||||
|
child: const Center(
|
||||||
child: Icon(Icons.menu_open, size: 50),
|
child: Icon(Icons.menu_open, size: 50),
|
||||||
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user