tv: no scroll bar
This commit is contained in:
parent
7a0c27a313
commit
ecfe128774
4 changed files with 38 additions and 30 deletions
|
@ -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,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
|
|
@ -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<Widget>? scrollableContent;
|
||||
final bool hasScrollBar;
|
||||
final double horizontalContentPadding;
|
||||
final Widget? content;
|
||||
final List<Widget> 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(
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -164,7 +164,7 @@ class _WelcomePageState extends State<WelcomePage> {
|
|||
final canEnableErrorReporting = context.select<AppFlavor, bool>((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: [
|
||||
|
|
Loading…
Reference in a new issue