diff --git a/lib/widgets/common/basic/markdown_container.dart b/lib/widgets/common/basic/markdown_container.dart index a8174795b..14cd63158 100644 --- a/lib/widgets/common/basic/markdown_container.dart +++ b/lib/widgets/common/basic/markdown_container.dart @@ -1,3 +1,4 @@ +import 'package:aves/model/settings/settings.dart'; import 'package:aves/widgets/aves_app.dart'; import 'package:aves/widgets/common/fx/borders.dart'; import 'package:flutter/material.dart'; @@ -15,10 +16,40 @@ class MarkdownContainer extends StatelessWidget { this.scrollController, }); - static const double maxWidth = 460; + static const double mobileMaxWidth = 460; @override Widget build(BuildContext context) { + final useTvLayout = settings.useTvLayout; + + Widget child = Directionality( + textDirection: textDirection ?? Directionality.of(context), + child: Markdown( + data: data, + selectable: true, + onTapLink: (text, href, title) => AvesApp.launchUrl(href), + controller: scrollController, + shrinkWrap: true, + ), + ); + + if (!useTvLayout) { + child = Theme( + data: Theme.of(context).copyWith( + scrollbarTheme: ScrollbarThemeData( + thumbVisibility: MaterialStateProperty.all(true), + radius: const Radius.circular(16), + crossAxisMargin: 6, + mainAxisMargin: 16, + interactive: true, + ), + ), + child: Scrollbar( + child: child, + ), + ); + } + return Container( margin: const EdgeInsets.symmetric(horizontal: 8), decoration: BoxDecoration( @@ -26,32 +57,10 @@ class MarkdownContainer extends StatelessWidget { border: Border.all(color: Theme.of(context).dividerColor, width: AvesBorder.curvedBorderWidth), borderRadius: const BorderRadius.all(Radius.circular(16)), ), - constraints: const BoxConstraints(maxWidth: maxWidth), + constraints: BoxConstraints(maxWidth: useTvLayout ? double.infinity : mobileMaxWidth), child: ClipRRect( borderRadius: const BorderRadius.all(Radius.circular(16)), - child: Theme( - data: Theme.of(context).copyWith( - scrollbarTheme: ScrollbarThemeData( - thumbVisibility: MaterialStateProperty.all(true), - radius: const Radius.circular(16), - crossAxisMargin: 6, - mainAxisMargin: 16, - interactive: true, - ), - ), - child: Scrollbar( - child: Directionality( - textDirection: textDirection ?? Directionality.of(context), - child: Markdown( - data: data, - selectable: true, - onTapLink: (text, href, title) => AvesApp.launchUrl(href), - controller: scrollController, - shrinkWrap: true, - ), - ), - ), - ), + child: child, ), ); } diff --git a/lib/widgets/dialogs/aves_dialog.dart b/lib/widgets/dialogs/aves_dialog.dart index 3f36863bb..27a9fa83e 100644 --- a/lib/widgets/dialogs/aves_dialog.dart +++ b/lib/widgets/dialogs/aves_dialog.dart @@ -1,5 +1,6 @@ import 'dart:ui'; +import 'package:aves/model/settings/settings.dart'; import 'package:aves/widgets/common/extensions/build_context.dart'; import 'package:flutter/material.dart'; @@ -7,7 +8,6 @@ class AvesDialog extends StatelessWidget { final String? title; final ScrollController scrollController; final List? scrollableContent; - final bool hasScrollBar; final double horizontalContentPadding; final Widget? content; final List actions; @@ -24,7 +24,6 @@ class AvesDialog extends StatelessWidget { this.title, ScrollController? scrollController, this.scrollableContent, - this.hasScrollBar = true, this.horizontalContentPadding = defaultHorizontalContentPadding, this.content, required this.actions, @@ -69,7 +68,7 @@ class AvesDialog extends StatelessWidget { children: scrollableContent!, ); - if (hasScrollBar) { + if (!settings.useTvLayout) { child = Theme( data: Theme.of(context).copyWith( scrollbarTheme: ScrollbarThemeData( diff --git a/lib/widgets/viewer/action/entry_action_delegate.dart b/lib/widgets/viewer/action/entry_action_delegate.dart index 7873ec220..d70063b92 100644 --- a/lib/widgets/viewer/action/entry_action_delegate.dart +++ b/lib/widgets/viewer/action/entry_action_delegate.dart @@ -110,9 +110,9 @@ class EntryActionDelegate with FeedbackMixin, PermissionAwareMixin, SizeAwareMix return canWrite; case EntryAction.copyToClipboard: case EntryAction.open: + case EntryAction.setAs: return !settings.useTvLayout; case EntryAction.info: - case EntryAction.setAs: case EntryAction.share: return true; case EntryAction.restore: diff --git a/lib/widgets/welcome_page.dart b/lib/widgets/welcome_page.dart index 8478af4a3..f1bd5e30d 100644 --- a/lib/widgets/welcome_page.dart +++ b/lib/widgets/welcome_page.dart @@ -164,7 +164,7 @@ class _WelcomePageState extends State { final canEnableErrorReporting = context.select((v) => v.canEnableErrorReporting); const contentPadding = EdgeInsets.symmetric(horizontal: 8); final switches = ConstrainedBox( - constraints: const BoxConstraints(maxWidth: MarkdownContainer.maxWidth), + constraints: const BoxConstraints(maxWidth: MarkdownContainer.mobileMaxWidth), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [