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/aves_app.dart';
|
||||||
import 'package:aves/widgets/common/fx/borders.dart';
|
import 'package:aves/widgets/common/fx/borders.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
@ -15,10 +16,40 @@ class MarkdownContainer extends StatelessWidget {
|
||||||
this.scrollController,
|
this.scrollController,
|
||||||
});
|
});
|
||||||
|
|
||||||
static const double maxWidth = 460;
|
static const double mobileMaxWidth = 460;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
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(
|
return Container(
|
||||||
margin: const EdgeInsets.symmetric(horizontal: 8),
|
margin: const EdgeInsets.symmetric(horizontal: 8),
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
|
@ -26,32 +57,10 @@ class MarkdownContainer extends StatelessWidget {
|
||||||
border: Border.all(color: Theme.of(context).dividerColor, width: AvesBorder.curvedBorderWidth),
|
border: Border.all(color: Theme.of(context).dividerColor, width: AvesBorder.curvedBorderWidth),
|
||||||
borderRadius: const BorderRadius.all(Radius.circular(16)),
|
borderRadius: const BorderRadius.all(Radius.circular(16)),
|
||||||
),
|
),
|
||||||
constraints: const BoxConstraints(maxWidth: maxWidth),
|
constraints: BoxConstraints(maxWidth: useTvLayout ? double.infinity : mobileMaxWidth),
|
||||||
child: ClipRRect(
|
child: ClipRRect(
|
||||||
borderRadius: const BorderRadius.all(Radius.circular(16)),
|
borderRadius: const BorderRadius.all(Radius.circular(16)),
|
||||||
child: Theme(
|
child: child,
|
||||||
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,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
import 'dart:ui';
|
import 'dart:ui';
|
||||||
|
|
||||||
|
import 'package:aves/model/settings/settings.dart';
|
||||||
import 'package:aves/widgets/common/extensions/build_context.dart';
|
import 'package:aves/widgets/common/extensions/build_context.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
@ -7,7 +8,6 @@ class AvesDialog extends StatelessWidget {
|
||||||
final String? title;
|
final String? title;
|
||||||
final ScrollController scrollController;
|
final ScrollController scrollController;
|
||||||
final List<Widget>? scrollableContent;
|
final List<Widget>? scrollableContent;
|
||||||
final bool hasScrollBar;
|
|
||||||
final double horizontalContentPadding;
|
final double horizontalContentPadding;
|
||||||
final Widget? content;
|
final Widget? content;
|
||||||
final List<Widget> actions;
|
final List<Widget> actions;
|
||||||
|
@ -24,7 +24,6 @@ class AvesDialog extends StatelessWidget {
|
||||||
this.title,
|
this.title,
|
||||||
ScrollController? scrollController,
|
ScrollController? scrollController,
|
||||||
this.scrollableContent,
|
this.scrollableContent,
|
||||||
this.hasScrollBar = true,
|
|
||||||
this.horizontalContentPadding = defaultHorizontalContentPadding,
|
this.horizontalContentPadding = defaultHorizontalContentPadding,
|
||||||
this.content,
|
this.content,
|
||||||
required this.actions,
|
required this.actions,
|
||||||
|
@ -69,7 +68,7 @@ class AvesDialog extends StatelessWidget {
|
||||||
children: scrollableContent!,
|
children: scrollableContent!,
|
||||||
);
|
);
|
||||||
|
|
||||||
if (hasScrollBar) {
|
if (!settings.useTvLayout) {
|
||||||
child = Theme(
|
child = Theme(
|
||||||
data: Theme.of(context).copyWith(
|
data: Theme.of(context).copyWith(
|
||||||
scrollbarTheme: ScrollbarThemeData(
|
scrollbarTheme: ScrollbarThemeData(
|
||||||
|
|
|
@ -110,9 +110,9 @@ class EntryActionDelegate with FeedbackMixin, PermissionAwareMixin, SizeAwareMix
|
||||||
return canWrite;
|
return canWrite;
|
||||||
case EntryAction.copyToClipboard:
|
case EntryAction.copyToClipboard:
|
||||||
case EntryAction.open:
|
case EntryAction.open:
|
||||||
|
case EntryAction.setAs:
|
||||||
return !settings.useTvLayout;
|
return !settings.useTvLayout;
|
||||||
case EntryAction.info:
|
case EntryAction.info:
|
||||||
case EntryAction.setAs:
|
|
||||||
case EntryAction.share:
|
case EntryAction.share:
|
||||||
return true;
|
return true;
|
||||||
case EntryAction.restore:
|
case EntryAction.restore:
|
||||||
|
|
|
@ -164,7 +164,7 @@ class _WelcomePageState extends State<WelcomePage> {
|
||||||
final canEnableErrorReporting = context.select<AppFlavor, bool>((v) => v.canEnableErrorReporting);
|
final canEnableErrorReporting = context.select<AppFlavor, bool>((v) => v.canEnableErrorReporting);
|
||||||
const contentPadding = EdgeInsets.symmetric(horizontal: 8);
|
const contentPadding = EdgeInsets.symmetric(horizontal: 8);
|
||||||
final switches = ConstrainedBox(
|
final switches = ConstrainedBox(
|
||||||
constraints: const BoxConstraints(maxWidth: MarkdownContainer.maxWidth),
|
constraints: const BoxConstraints(maxWidth: MarkdownContainer.mobileMaxWidth),
|
||||||
child: Column(
|
child: Column(
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
children: [
|
children: [
|
||||||
|
|
Loading…
Reference in a new issue