From 00d29489300ca3fbdb9f3c1128a8e4662d7069f7 Mon Sep 17 00:00:00 2001 From: S-ecki <75510543+S-ecki@users.noreply.github.com> Date: Wed, 9 Mar 2022 17:10:49 +0100 Subject: [PATCH] feat: align channel_header center title with AppBar --- .../lib/src/channel_header.dart | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/packages/stream_chat_flutter/lib/src/channel_header.dart b/packages/stream_chat_flutter/lib/src/channel_header.dart index e15e7c62..6cb26434 100644 --- a/packages/stream_chat_flutter/lib/src/channel_header.dart +++ b/packages/stream_chat_flutter/lib/src/channel_header.dart @@ -170,7 +170,7 @@ class ChannelHeader extends StatelessWidget implements PreferredSizeWidget { ), ), ], - centerTitle: centerTitle ?? true, + centerTitle: _getEffectiveCenterTitle(theme), title: InkWell( onTap: onTitleTap, child: SizedBox( @@ -202,4 +202,24 @@ class ChannelHeader extends StatelessWidget implements PreferredSizeWidget { @override final Size preferredSize; + + /// Returns the effective center title for the current theme and platform. + /// + /// This code is aligned with the [AppBar]'s [AppBar.centerTitle]. + bool _getEffectiveCenterTitle(ThemeData theme) { + if (centerTitle != null) return centerTitle!; + if (theme.appBarTheme.centerTitle != null) { + return theme.appBarTheme.centerTitle!; + } + switch (theme.platform) { + case TargetPlatform.android: + case TargetPlatform.fuchsia: + case TargetPlatform.linux: + case TargetPlatform.windows: + return false; + case TargetPlatform.iOS: + case TargetPlatform.macOS: + return actions == null || actions!.length < 2; + } + } }