diff --git a/lib/screens/account.dart b/lib/screens/account.dart index 1a177f6..963261a 100644 --- a/lib/screens/account.dart +++ b/lib/screens/account.dart @@ -4,12 +4,11 @@ import 'package:gap/gap.dart'; import 'package:go_router/go_router.dart'; import 'package:material_symbols_icons/symbols.dart'; import 'package:provider/provider.dart'; -import 'package:responsive_framework/responsive_framework.dart'; import 'package:styled_widget/styled_widget.dart'; import 'package:surface/providers/userinfo.dart'; import 'package:surface/widgets/account/account_image.dart'; +import 'package:surface/widgets/app_bar_leading.dart'; import 'package:surface/widgets/dialog.dart'; -import 'package:surface/widgets/navigation/app_scaffold.dart'; class AccountScreen extends StatelessWidget { const AccountScreen({super.key}); @@ -20,11 +19,7 @@ class AccountScreen extends StatelessWidget { return Scaffold( appBar: AppBar( - leading: ResponsiveBreakpoints.of(context).smallerOrEqualTo(MOBILE) - ? DrawerButton(onPressed: () { - globalRootScaffoldKey.currentState?.openDrawer(); - }) - : null, + leading: AutoAppBarLeading(), title: Text("screenAccount").tr(), actions: [ IconButton( diff --git a/lib/screens/album.dart b/lib/screens/album.dart index 351c6e8..0484c83 100644 --- a/lib/screens/album.dart +++ b/lib/screens/album.dart @@ -6,6 +6,7 @@ import 'package:provider/provider.dart'; import 'package:styled_widget/styled_widget.dart'; import 'package:surface/providers/sn_network.dart'; import 'package:surface/types/attachment.dart'; +import 'package:surface/widgets/app_bar_leading.dart'; import 'package:surface/widgets/attachment/attachment_detail.dart'; import 'package:surface/widgets/attachment/attachment_item.dart'; import 'package:surface/widgets/dialog.dart'; @@ -82,6 +83,7 @@ class _AlbumScreenState extends State { controller: _scrollController, slivers: [ SliverAppBar( + leading: AutoAppBarLeading(), title: Text('screenAlbum').tr(), ), SliverMasonryGrid.extent( diff --git a/lib/screens/chat.dart b/lib/screens/chat.dart index c7b359c..d441f8c 100644 --- a/lib/screens/chat.dart +++ b/lib/screens/chat.dart @@ -3,14 +3,13 @@ import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; import 'package:material_symbols_icons/symbols.dart'; import 'package:provider/provider.dart'; -import 'package:responsive_framework/responsive_framework.dart'; import 'package:surface/providers/channel.dart'; import 'package:surface/providers/user_directory.dart'; import 'package:surface/types/chat.dart'; import 'package:surface/widgets/account/account_image.dart'; +import 'package:surface/widgets/app_bar_leading.dart'; import 'package:surface/widgets/dialog.dart'; import 'package:surface/widgets/loading_indicator.dart'; -import 'package:surface/widgets/navigation/app_scaffold.dart'; class ChatScreen extends StatefulWidget { const ChatScreen({super.key}); @@ -67,11 +66,7 @@ class _ChatScreenState extends State { return Scaffold( appBar: AppBar( - leading: ResponsiveBreakpoints.of(context).smallerOrEqualTo(MOBILE) - ? DrawerButton(onPressed: () { - globalRootScaffoldKey.currentState?.openDrawer(); - }) - : null, + leading: AutoAppBarLeading(), title: Text('screenChat').tr(), ), floatingActionButton: FloatingActionButton( diff --git a/lib/screens/explore.dart b/lib/screens/explore.dart index 4a058f2..7323df1 100644 --- a/lib/screens/explore.dart +++ b/lib/screens/explore.dart @@ -5,10 +5,9 @@ import 'package:gap/gap.dart'; import 'package:go_router/go_router.dart'; import 'package:material_symbols_icons/symbols.dart'; import 'package:provider/provider.dart'; -import 'package:responsive_framework/responsive_framework.dart'; import 'package:surface/providers/post.dart'; import 'package:surface/types/post.dart'; -import 'package:surface/widgets/navigation/app_scaffold.dart'; +import 'package:surface/widgets/app_bar_leading.dart'; import 'package:surface/widgets/post/post_item.dart'; import 'package:very_good_infinite_list/very_good_infinite_list.dart'; @@ -139,12 +138,7 @@ class _ExploreScreenState extends State { child: CustomScrollView( slivers: [ SliverAppBar( - leading: - ResponsiveBreakpoints.of(context).smallerOrEqualTo(MOBILE) - ? DrawerButton(onPressed: () { - globalRootScaffoldKey.currentState?.openDrawer(); - }) - : null, + leading: AutoAppBarLeading(), title: Text('screenExplore').tr(), floating: true, snap: true, diff --git a/lib/screens/friend.dart b/lib/screens/friend.dart index 7a8ac3f..c1f2b1a 100644 --- a/lib/screens/friend.dart +++ b/lib/screens/friend.dart @@ -8,6 +8,7 @@ import 'package:surface/providers/relationship.dart'; import 'package:surface/providers/sn_network.dart'; import 'package:surface/types/account.dart'; import 'package:surface/widgets/account/account_image.dart'; +import 'package:surface/widgets/app_bar_leading.dart'; import 'package:surface/widgets/dialog.dart'; import 'package:surface/widgets/loading_indicator.dart'; @@ -166,6 +167,7 @@ class _FriendScreenState extends State { Widget build(BuildContext context) { return Scaffold( appBar: AppBar( + leading: AutoAppBarLeading(), title: Text('screenFriend').tr(), ), floatingActionButton: FloatingActionButton( diff --git a/lib/screens/home.dart b/lib/screens/home.dart index 70d3134..a57b7f3 100644 --- a/lib/screens/home.dart +++ b/lib/screens/home.dart @@ -6,14 +6,13 @@ import 'package:gap/gap.dart'; import 'package:google_fonts/google_fonts.dart'; import 'package:material_symbols_icons/symbols.dart'; import 'package:provider/provider.dart'; -import 'package:responsive_framework/responsive_framework.dart'; import 'package:styled_widget/styled_widget.dart'; import 'package:flutter/material.dart'; import 'package:surface/providers/sn_network.dart'; import 'package:surface/providers/userinfo.dart'; import 'package:surface/types/check_in.dart'; +import 'package:surface/widgets/app_bar_leading.dart'; import 'package:surface/widgets/dialog.dart'; -import 'package:surface/widgets/navigation/app_scaffold.dart'; class HomeScreenDashEntry { final String name; @@ -47,11 +46,7 @@ class _HomeScreenState extends State { Widget build(BuildContext context) { return Scaffold( appBar: AppBar( - leading: ResponsiveBreakpoints.of(context).smallerOrEqualTo(MOBILE) - ? DrawerButton(onPressed: () { - globalRootScaffoldKey.currentState?.openDrawer(); - }) - : null, + leading: AutoAppBarLeading(), title: Text("screenHome").tr(), ), body: LayoutBuilder( diff --git a/lib/screens/notification.dart b/lib/screens/notification.dart index 0e6d484..280890b 100644 --- a/lib/screens/notification.dart +++ b/lib/screens/notification.dart @@ -10,6 +10,7 @@ import 'package:styled_widget/styled_widget.dart'; import 'package:surface/providers/sn_network.dart'; import 'package:surface/types/notification.dart'; import 'package:surface/types/post.dart'; +import 'package:surface/widgets/app_bar_leading.dart'; import 'package:surface/widgets/dialog.dart'; import 'package:surface/widgets/loading_indicator.dart'; import 'package:surface/widgets/markdown_content.dart'; @@ -132,6 +133,7 @@ class _NotificationScreenState extends State { Widget build(BuildContext context) { return Scaffold( appBar: AppBar( + leading: AutoAppBarLeading(), title: Text('screenNotification').tr(), actions: [ IconButton( diff --git a/lib/screens/realm.dart b/lib/screens/realm.dart index 5fd3eaf..64ddc8f 100644 --- a/lib/screens/realm.dart +++ b/lib/screens/realm.dart @@ -8,6 +8,7 @@ import 'package:styled_widget/styled_widget.dart'; import 'package:surface/providers/sn_network.dart'; import 'package:surface/types/realm.dart'; import 'package:surface/widgets/account/account_image.dart'; +import 'package:surface/widgets/app_bar_leading.dart'; import 'package:surface/widgets/dialog.dart'; import 'package:surface/widgets/loading_indicator.dart'; import 'package:surface/widgets/universal_image.dart'; @@ -77,6 +78,7 @@ class _RealmScreenState extends State { return Scaffold( appBar: AppBar( + leading: AutoAppBarLeading(), title: Text('screenRealm').tr(), actions: [ IconButton( diff --git a/lib/widgets/app_bar_leading.dart b/lib/widgets/app_bar_leading.dart new file mode 100644 index 0000000..a1fcd25 --- /dev/null +++ b/lib/widgets/app_bar_leading.dart @@ -0,0 +1,18 @@ +import 'package:flutter/material.dart'; +import 'package:responsive_framework/responsive_framework.dart'; +import 'package:surface/widgets/navigation/app_scaffold.dart'; + +class AutoAppBarLeading extends StatelessWidget { + const AutoAppBarLeading({super.key}); + + @override + Widget build(BuildContext context) { + return ResponsiveBreakpoints.of(context).smallerOrEqualTo(MOBILE) + ? DrawerButton(onPressed: () { + globalRootScaffoldKey.currentState?.openDrawer(); + }) + : Navigator.canPop(context) + ? BackButton() + : const SizedBox(); + } +} diff --git a/lib/widgets/navigation/app_drawer_navigation.dart b/lib/widgets/navigation/app_drawer_navigation.dart index 0de5379..3688d29 100644 --- a/lib/widgets/navigation/app_drawer_navigation.dart +++ b/lib/widgets/navigation/app_drawer_navigation.dart @@ -56,7 +56,7 @@ class _AppNavigationDrawerState extends State { ], ).padding( horizontal: 32, - top: MediaQuery.of(context).padding.top > 16 ? 8 : 16, + top: MediaQuery.of(context).padding.top > 16 ? 8 : 24, bottom: 8, ), ...destinations.where((ele) => ele.isPinned).map((ele) { diff --git a/macos/Runner/Info.plist b/macos/Runner/Info.plist index 4789daa..7cfa70c 100644 --- a/macos/Runner/Info.plist +++ b/macos/Runner/Info.plist @@ -26,6 +26,8 @@ $(PRODUCT_COPYRIGHT) NSMainNibFile MainMenu + LSApplicationCategoryType + public.app-category.social-networking NSPrincipalClass NSApplication