From d855d7dda3ca684819c38b7323bdf0b2e8e10e5a Mon Sep 17 00:00:00 2001 From: Nutcake Date: Sat, 24 Jun 2023 13:34:25 +0200 Subject: [PATCH] Change AppBar colors to be consistent across the app --- lib/main.dart | 1 + lib/widgets/friends/friends_list_app_bar.dart | 8 -- lib/widgets/homepage.dart | 1 + lib/widgets/messages/messages_list.dart | 24 ++--- .../messages/messages_session_header.dart | 97 ++++++++++++------- .../sessions/session_list_app_bar.dart | 8 -- lib/widgets/sessions/session_view.dart | 15 +-- lib/widgets/settings_app_bar.dart | 8 -- pubspec.yaml | 2 +- 9 files changed, 70 insertions(+), 94 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index d9ddb7e..ce24809 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -18,6 +18,7 @@ import 'package:contacts_plus_plus/widgets/update_notifier.dart'; import 'package:dynamic_color/dynamic_color.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:flutter_downloader/flutter_downloader.dart'; import 'package:flutter_phoenix/flutter_phoenix.dart'; import 'package:hive_flutter/hive_flutter.dart'; diff --git a/lib/widgets/friends/friends_list_app_bar.dart b/lib/widgets/friends/friends_list_app_bar.dart index 367411b..7e5ef23 100644 --- a/lib/widgets/friends/friends_list_app_bar.dart +++ b/lib/widgets/friends/friends_list_app_bar.dart @@ -51,7 +51,6 @@ class _FriendsListAppBarState extends State with AutomaticKee value: Provider.of(context, listen: false), child: AppBar( title: const Text("Contacts++"), - backgroundColor: Theme.of(context).colorScheme.surfaceVariant, actions: [ FutureBuilder( future: _userStatusFuture, @@ -199,13 +198,6 @@ class _FriendsListAppBarState extends State with AutomaticKee ), ) ], - bottom: PreferredSize( - preferredSize: const Size.fromHeight(1), - child: Container( - height: 1, - color: Colors.black, - ), - ), ), ); } diff --git a/lib/widgets/homepage.dart b/lib/widgets/homepage.dart index a8035db..d402d8c 100644 --- a/lib/widgets/homepage.dart +++ b/lib/widgets/homepage.dart @@ -52,6 +52,7 @@ class _HomeState extends State { color: Theme.of(context).colorScheme.background, ), child: BottomNavigationBar( + backgroundColor: Theme.of(context).colorScheme.surface, type: BottomNavigationBarType.fixed, unselectedItemColor: Theme.of(context).colorScheme.onBackground, selectedItemColor: Theme.of(context).colorScheme.primary, diff --git a/lib/widgets/messages/messages_list.dart b/lib/widgets/messages/messages_list.dart index 450e346..3e5b8a1 100644 --- a/lib/widgets/messages/messages_list.dart +++ b/lib/widgets/messages/messages_list.dart @@ -52,7 +52,7 @@ class _MessagesListState extends State with SingleTickerProviderSt @override Widget build(BuildContext context) { - final appBarColor = Theme.of(context).colorScheme.surfaceVariant; + final appBarColor = Theme.of(context).colorScheme.surface; return Consumer(builder: (context, mClient, _) { final friend = mClient.selectedFriend ?? Friend.empty(); final cache = mClient.getUserMessageCache(friend.id); @@ -79,15 +79,6 @@ class _MessagesListState extends State with SingleTickerProviderSt ), ], ), - bottom: sessions.isNotEmpty && _sessionListOpen - ? null - : PreferredSize( - preferredSize: const Size.fromHeight(1), - child: Container( - height: 1, - color: Colors.black, - ), - ), actions: [ if (sessions.isNotEmpty) AnimatedRotation( @@ -107,9 +98,6 @@ class _MessagesListState extends State with SingleTickerProviderSt ) ], scrolledUnderElevation: 0.0, - backgroundColor: appBarColor, - surfaceTintColor: Colors.transparent, - shadowColor: Colors.transparent, ), body: Column( children: [ @@ -122,11 +110,11 @@ class _MessagesListState extends State with SingleTickerProviderSt ? null : Container( constraints: const BoxConstraints(maxHeight: 64), - decoration: BoxDecoration( - color: appBarColor, - border: const Border( - bottom: BorderSide(width: 1, color: Colors.black), - )), + decoration: const BoxDecoration( + border: Border( + bottom: BorderSide(width: 1, color: Colors.black), + ), + ), child: Stack( children: [ ListView.builder( diff --git a/lib/widgets/messages/messages_session_header.dart b/lib/widgets/messages/messages_session_header.dart index 34439ca..d8d532b 100644 --- a/lib/widgets/messages/messages_session_header.dart +++ b/lib/widgets/messages/messages_session_header.dart @@ -35,57 +35,73 @@ class SessionPopup extends StatelessWidget { FormattedText(session.formattedName, style: Theme.of(context).textTheme.titleMedium), session.formattedDescription.isEmpty ? const Text("No description") - : FormattedText(session.formattedDescription, style: Theme.of(context).textTheme.labelMedium), - Text("Tags: ${session.tags.isEmpty ? "None" : session.tags.join(", ")}", + : FormattedText(session.formattedDescription, + style: Theme.of(context).textTheme.labelMedium), + Text( + "Tags: ${session.tags.isEmpty ? "None" : session.tags.join(", ")}", style: Theme.of(context).textTheme.labelMedium, softWrap: true, ), - Text("Access: ${session.accessLevel.toReadableString()}", style: Theme.of(context).textTheme.labelMedium), + Text("Access: ${session.accessLevel.toReadableString()}", + style: Theme.of(context).textTheme.labelMedium), Text("Users: ${session.sessionUsers.length}", style: Theme.of(context).textTheme.labelMedium), Text("Maximum users: ${session.maxUsers}", style: Theme.of(context).textTheme.labelMedium), - Text("Headless: ${session.headlessHost ? "Yes" : "No"}", style: Theme.of(context).textTheme.labelMedium), + Text("Headless: ${session.headlessHost ? "Yes" : "No"}", + style: Theme.of(context).textTheme.labelMedium), ], ), ), - if (session.sessionUsers.isNotEmpty) Expanded( - child: Scrollbar( - trackVisibility: true, - controller: userListScrollController, - thumbVisibility: true, - child: ListView.builder( + if (session.sessionUsers.isNotEmpty) + Expanded( + child: Scrollbar( + trackVisibility: true, controller: userListScrollController, - shrinkWrap: true, - itemCount: session.sessionUsers.length, - itemBuilder: (context, index) { - final user = session.sessionUsers[index]; - return ListTile( - dense: true, - title: Text(user.username, textAlign: TextAlign.end,), - subtitle: Text(user.isPresent ? "Active" : "Inactive", textAlign: TextAlign.end,), - ); - }, + thumbVisibility: true, + child: ListView.builder( + controller: userListScrollController, + shrinkWrap: true, + itemCount: session.sessionUsers.length, + itemBuilder: (context, index) { + final user = session.sessionUsers[index]; + return ListTile( + dense: true, + title: Text( + user.username, + textAlign: TextAlign.end, + ), + subtitle: Text( + user.isPresent ? "Active" : "Inactive", + textAlign: TextAlign.end, + ), + ); + }, + ), + ), + ) + else + const Expanded( + child: Center( + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Icon(Icons.person_remove_alt_1_rounded), + Padding( + padding: EdgeInsets.all(16.0), + child: Text( + "No one is currently playing.", + textAlign: TextAlign.center, + ), + ) + ], + ), ), ), - ) else const Expanded( - child: Center( - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - Icon(Icons.person_remove_alt_1_rounded), - Padding( - padding: EdgeInsets.all(16.0), - child: Text("No one is currently playing.", textAlign: TextAlign.center,), - ) - ], - ), - ), - ), ], ), ), Expanded( child: Center( - child: CachedNetworkImage( + child: CachedNetworkImage( imageUrl: thumbnailUri, placeholder: (context, url) { return const CircularProgressIndicator(); @@ -114,11 +130,15 @@ class SessionPopup extends StatelessWidget { class SessionTile extends StatelessWidget { const SessionTile({required this.session, super.key}); + final Session session; @override Widget build(BuildContext context) { return TextButton( + style: TextButton.styleFrom( + foregroundColor: Theme.of(context).colorScheme.onSurface, + ), onPressed: () { Navigator.of(context).push(MaterialPageRoute(builder: (context) => SessionView(session: session))); }, @@ -133,7 +153,10 @@ class SessionTile extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ FormattedText(session.formattedName), - Text("${session.sessionUsers.length.toString().padLeft(2, "0")}/${session.maxUsers.toString().padLeft(2, "0")} active users") + Text( + "${session.sessionUsers.length.toString().padLeft(2, "0")}/${session.maxUsers.toString().padLeft(2, "0")} active users", + style: Theme.of(context).textTheme.labelMedium?.copyWith(color: Theme.of(context).colorScheme.onSurface.withOpacity(.6)), + ) ], ), ) @@ -141,4 +164,4 @@ class SessionTile extends StatelessWidget { ), ); } -} \ No newline at end of file +} diff --git a/lib/widgets/sessions/session_list_app_bar.dart b/lib/widgets/sessions/session_list_app_bar.dart index f3efbd3..aa19421 100644 --- a/lib/widgets/sessions/session_list_app_bar.dart +++ b/lib/widgets/sessions/session_list_app_bar.dart @@ -15,14 +15,6 @@ class _SessionListAppBarState extends State { Widget build(BuildContext context) { return AppBar( title: const Text("Sessions"), - backgroundColor: Theme.of(context).colorScheme.surfaceVariant, - bottom: PreferredSize( - preferredSize: const Size.fromHeight(1), - child: Container( - height: 1, - color: Colors.black, - ), - ), actions: [ Padding( padding: const EdgeInsets.only(right: 4.0), diff --git a/lib/widgets/sessions/session_view.dart b/lib/widgets/sessions/session_view.dart index a461a3c..7a3a71b 100644 --- a/lib/widgets/sessions/session_view.dart +++ b/lib/widgets/sessions/session_view.dart @@ -48,20 +48,7 @@ class _SessionViewState extends State { maxLines: 1, style: Theme.of(context).textTheme.titleLarge, ), - bottom: PreferredSize( - preferredSize: const Size.fromHeight(1), - child: Row( - children: [ - Expanded( - child: Container( - width: double.infinity, - height: 1, - color: Colors.black, - ), - ), - ], - ), - ), + scrolledUnderElevation: 0, ), body: RefreshIndicator( onRefresh: () async { diff --git a/lib/widgets/settings_app_bar.dart b/lib/widgets/settings_app_bar.dart index 1b226bf..5433939 100644 --- a/lib/widgets/settings_app_bar.dart +++ b/lib/widgets/settings_app_bar.dart @@ -6,15 +6,7 @@ class SettingsAppBar extends StatelessWidget { @override Widget build(BuildContext context) { return AppBar( - backgroundColor: Theme.of(context).colorScheme.surfaceVariant, title: const Text("Settings"), - bottom: PreferredSize( - preferredSize: const Size.fromHeight(1), - child: Container( - height: 1, - color: Colors.black, - ), - ), ); } diff --git a/pubspec.yaml b/pubspec.yaml index 3e4423f..69d5548 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -16,7 +16,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html # In Windows, build-name is used as the major, minor, and patch parts # of the product and file versions while build-number is used as the build suffix. -version: 1.3.2+1 +version: 1.4.1+1 environment: sdk: '>=3.0.1'