Add text wrap toggle to logs screen (#235)

* Add text wrap toggle to logs screen

* Use CupertinoButton.tinted on iOS instead of IconButton
This commit is contained in:
Caleb Jasik 2025-01-27 10:14:29 -06:00 committed by GitHub
parent 5afc1ef692
commit 126ed2f4b0
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -45,6 +45,7 @@ class _SiteLogsScreenState extends State<SiteLogsScreen> {
return SimplePage( return SimplePage(
title: title, title: title,
trailingActions: [Padding(padding: const EdgeInsets.only(right: 8), child: _buildTextWrapToggle())],
scrollable: SimpleScrollable.both, scrollable: SimpleScrollable.both,
scrollController: controller, scrollController: controller,
onRefresh: () async { onRefresh: () async {
@ -64,6 +65,37 @@ class _SiteLogsScreenState extends State<SiteLogsScreen> {
); );
} }
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() { Widget _buildBottomBar() {
var borderSide = BorderSide( var borderSide = BorderSide(
color: CupertinoColors.separator, color: CupertinoColors.separator,