diff --git a/lib/screens/SiteLogsScreen.dart b/lib/screens/SiteLogsScreen.dart index 5acfd35..78c75a0 100644 --- a/lib/screens/SiteLogsScreen.dart +++ b/lib/screens/SiteLogsScreen.dart @@ -45,31 +45,7 @@ class _SiteLogsScreenState extends State { return SimplePage( title: title, - trailingActions: [ - Padding( - padding: const EdgeInsets.only(right: 8), - child: IconButton.filledTonal( - // Fixes enormous button on iOS, this *should* be the default, but it seems to be overridden. - iconSize: 24, - style: Platform.isIOS - ? IconButton.styleFrom( - shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)), - // Match background when not selected on iOS - backgroundColor: settings.logWrap ? null : Colors.transparent, - ) - : null, - isSelected: settings.logWrap, - tooltip: "Turn ${settings.logWrap ? "off" : "on"} text wrapping", - selectedIcon: const Icon(Icons.wrap_text_outlined), - icon: const Icon(Icons.wrap_text), - onPressed: () => { - setState(() { - settings.logWrap = !settings.logWrap; - }) - }, - ), - ) - ], + trailingActions: [Padding(padding: const EdgeInsets.only(right: 8), child: _buildTextWrapToggle())], scrollable: SimpleScrollable.both, scrollController: controller, onRefresh: () async { @@ -89,6 +65,37 @@ class _SiteLogsScreenState extends State { ); } + Widget _buildTextWrapToggle() { + return Platform.isIOS + ? Tooltip( + message: "Turn ${settings.logWrap ? "off" : "on"} text wrapping", + child: CupertinoButton.tinted( + // Use the default tint when enabled, match the background when not. + color: settings.logWrap ? null : CupertinoColors.systemBackground, + sizeStyle: CupertinoButtonSize.small, + borderRadius: const BorderRadius.all(Radius.circular(8)), + child: const Icon(Icons.wrap_text), + onPressed: () => { + setState(() { + settings.logWrap = !settings.logWrap; + }) + }, + ), + ) + : IconButton.filledTonal( + isSelected: settings.logWrap, + tooltip: "Turn ${settings.logWrap ? "off" : "on"} text wrapping", + // The variants of wrap_text seem to be the same, but this seems most correct. + selectedIcon: const Icon(Icons.wrap_text_outlined), + icon: const Icon(Icons.wrap_text), + onPressed: () => { + setState(() { + settings.logWrap = !settings.logWrap; + }) + }, + ); + } + Widget _buildBottomBar() { var borderSide = BorderSide( color: CupertinoColors.separator,