From a4a87f047761d0c885e4565470f2278a5a775149 Mon Sep 17 00:00:00 2001 From: Matthias Ngeo Date: Thu, 5 Dec 2024 13:09:32 +0800 Subject: [PATCH] Uh oh --- docs/pages/docs/overlay/_meta.ts | 8 + docs/pages/docs/overlay/sheet.mdx | 212 ++++++++++++++++++ forui/CHANGELOG.md | 10 + forui/example/lib/sandbox.dart | 73 +++++- forui/lib/src/widgets/scaffold.dart | 20 +- forui/lib/src/widgets/sheet/sheet.dart | 2 +- forui/lib/src/widgets/sheet/sheets.dart | 29 ++- .../test/golden/scaffold/zinc-dark-sheets.png | Bin 0 -> 63213 bytes .../golden/scaffold/zinc-light-sheets.png | Bin 0 -> 66121 bytes .../src/widgets/scaffold_golden_test.dart | 55 +++++ .../src/widgets/sheet/sheets_golden_test.dart | 6 +- forui/test/src/widgets/sheet/sheets_test.dart | 14 +- samples/lib/main.dart | 2 + samples/lib/widgets/modal_sheet.dart | 2 +- samples/lib/widgets/sheets.dart | 173 ++++++++++++++ 15 files changed, 572 insertions(+), 34 deletions(-) create mode 100644 docs/pages/docs/overlay/_meta.ts create mode 100644 docs/pages/docs/overlay/sheet.mdx create mode 100644 forui/test/golden/scaffold/zinc-dark-sheets.png create mode 100644 forui/test/golden/scaffold/zinc-light-sheets.png create mode 100644 samples/lib/widgets/sheets.dart diff --git a/docs/pages/docs/overlay/_meta.ts b/docs/pages/docs/overlay/_meta.ts new file mode 100644 index 000000000..be3db23bf --- /dev/null +++ b/docs/pages/docs/overlay/_meta.ts @@ -0,0 +1,8 @@ +export default { + dialog: 'Dialog', + popover: 'Popover', + 'popover-menu': 'Popover Menu', + 'sheet': 'Sheet', + 'modal-sheet': 'Modal Sheet', + tooltip: 'Tooltip', +}; diff --git a/docs/pages/docs/overlay/sheet.mdx b/docs/pages/docs/overlay/sheet.mdx new file mode 100644 index 000000000..b310ec2c6 --- /dev/null +++ b/docs/pages/docs/overlay/sheet.mdx @@ -0,0 +1,212 @@ +import { Callout, Tabs } from 'nextra/components'; +import { Widget } from "../../../components/widget.tsx"; +import LinkBadge from "../../../components/link-badge/link-badge.tsx"; +import LinkBadgeGroup from "../../../components/link-badge/link-badge-group.tsx"; + +# Sheet + +A sheet that are displayed above another widget. It is part of [FScaffold](/docs/layout/scaffold), which should be +preferred in most cases. + + + + + + + All calls to `showFSheet(...)` should be made inside widgets that have either `FScaffold` or `Sheets` as their + + + + + + + + ```dart + class Sheets extends StatefulWidget { + @override + State createState() => _State(); + } + + class _State extends State { + final Map _controllers = {}; + + @override + Widget build(BuildContext context) { + VoidCallback onPress(Layout side) => () { + var controller = _controllers[side]; + if (controller == null) { + controller = _controllers[side] ??= showFSheet( + context: context, + side: Layout.ltr, + builder: (context) => Form(side: side), + ); + } else { + controller.toggle(); + } + }; + + return FScaffold( // This can be replaced with FSheets + content: Column( + mainAxisAlignment: MainAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + FButton( + label: const Text('Left'), + onPress: onPress(Layout.ltr), + ), + const SizedBox(height: 5), + FButton( + label: const Text('Top'), + onPress: onPress(Layout.ttb), + ), + const SizedBox(height: 5), + FButton( + label: const Text('Right'), + onPress: onPress(Layout.rtl), + ), + const SizedBox(height: 5), + FButton( + label: const Text('Bottom'), + onPress: onPress(Layout.btt), + ), + ], + ), + ); + } + } + + class Form extends StatelessWidget { + final Layout side; + + const Form({required this.side, super.key}); + + @override + Widget build(BuildContext context) => Container( + height: double.infinity, + width: double.infinity, + decoration: BoxDecoration( + color: context.theme.colorScheme.background, + border: side.vertical + ? Border.symmetric(horizontal: BorderSide(color: context.theme.colorScheme.border)) + : Border.symmetric(vertical: BorderSide(color: context.theme.colorScheme.border)), + ), + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 15, vertical: 8.0), + child: Center( + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'Account', + style: context.theme.typography.xl2.copyWith( + fontWeight: FontWeight.w600, + color: context.theme.colorScheme.foreground, + height: 1.5, + ), + ), + Text( + 'Make changes to your account here. Click save when you are done.', + style: context.theme.typography.sm.copyWith( + color: context.theme.colorScheme.mutedForeground, + ), + ), + const SizedBox(height: 8), + SizedBox( + width: 450, + child: Column( + children: [ + const FTextField( + label: Text('Name'), + hint: 'John Renalo', + ), + const SizedBox(height: 10), + const FTextField( + label: Text('Email'), + hint: 'john@doe.com', + ), + const SizedBox(height: 16), + FButton( + label: const Text('Save'), + onPress: () => Navigator.of(context).pop(), + ), + ], + ), + ), + ], + ), + ), + ), + ); + + @override + void dispose() { + for (final controller in _controllers.values) { + controller.dispose(); + } + super.dispose(); + } + } + ``` + + + +## Usage + +### `showFSheet(...)` + +```dart +showFSheet( + context: context, + side: Layout.ltr, + useRootNavigator: true, + useSafeArea: false, + keepAliveOffstage: true, + mainAxisMaxRatio: null, + constraints: const BoxConstraints(maxWidth: 450, maxHeight: 450), + draggable: true, + builder: (context) => const Placeholder(), +); +``` + +## Examples + +### With `DraggableScrollableSheet` + + + + + + + ```dart + FScaffold( // This can be replaced with FSheets + content: FButton( + label: const Text('Click me'), + onPress: () => showFSheet( + context: context, + side: Layout.btt, + mainAxisMaxRatio: null, + builder: (context) => DraggableScrollableSheet( + expand: false, + builder: (context, controller) => ScrollConfiguration( + // This is required to enable dragging on desktop. + // See https://github.com/flutter/flutter/issues/101903 for more information. + behavior: ScrollConfiguration.of(context).copyWith(dragDevices: { + PointerDeviceKind.touch, + PointerDeviceKind.mouse, + PointerDeviceKind.trackpad, + }), + child: FTileGroup.builder( + count: 25, + controller: controller, + tileBuilder: (context, index) => FTile(title: Text('Tile $index')), + ), + ), + ), + ), + ), + ); + ``` + + + diff --git a/forui/CHANGELOG.md b/forui/CHANGELOG.md index 6505e7c0c..fe9a3f42a 100644 --- a/forui/CHANGELOG.md +++ b/forui/CHANGELOG.md @@ -2,6 +2,16 @@ ### Additions +* Add `showFSheet(...)`. + +* Add `showFModalSheet(...)`. + +* Add `FModalSheetRoute`. + +* Add `FSheets`. + +* Add `FSheets` internally to `FScaffold`. + * Add `truncateAndStripTimezone` to `FCalendarController.date(...)`. * Add `truncateAndStripTimezone` to `FCalendarController.dates(...)`. diff --git a/forui/example/lib/sandbox.dart b/forui/example/lib/sandbox.dart index b761180b3..869d2388c 100644 --- a/forui/example/lib/sandbox.dart +++ b/forui/example/lib/sandbox.dart @@ -13,14 +13,12 @@ class Sandbox extends StatefulWidget { class _SandboxState extends State with SingleTickerProviderStateMixin { final GlobalKey _formKey = GlobalKey(); - final FRadioSelectGroupController controller = FRadioSelectGroupController(); - late FPopoverController popoverController; - late FCalendarController a = FCalendarController.date(); + late AnimationController controller; @override void initState() { super.initState(); - popoverController = FPopoverController(vsync: this); + controller = AnimationController(vsync: this, duration: const Duration(milliseconds: 300)); } @override @@ -41,7 +39,7 @@ class _SandboxState extends State with SingleTickerProviderStateMixin { ), ], ), - ); + ); @override void dispose() { @@ -49,3 +47,68 @@ class _SandboxState extends State with SingleTickerProviderStateMixin { super.dispose(); } } + +class AForm extends StatelessWidget { + final Layout side; + + const AForm({required this.side, super.key}); + + @override + Widget build(BuildContext context) => Container( + height: double.infinity, + width: double.infinity, + decoration: BoxDecoration( + color: context.theme.colorScheme.background, + border: side.vertical + ? Border.symmetric(horizontal: BorderSide(color: context.theme.colorScheme.border)) + : Border.symmetric(vertical: BorderSide(color: context.theme.colorScheme.border)), + ), + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 15, vertical: 8.0), + child: Center( + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'Account', + style: context.theme.typography.xl2.copyWith( + fontWeight: FontWeight.w600, + color: context.theme.colorScheme.foreground, + height: 1.5, + ), + ), + Text( + 'Make changes to your account here. Click save when you are done.', + style: context.theme.typography.sm.copyWith( + color: context.theme.colorScheme.mutedForeground, + ), + ), + const SizedBox(height: 8), + SizedBox( + width: 450, + child: Column( + children: [ + const FTextField( + label: Text('Name'), + hint: 'John Renalo', + ), + const SizedBox(height: 10), + const FTextField( + label: Text('Email'), + hint: 'john@doe.com', + ), + const SizedBox(height: 16), + FButton( + label: const Text('Save'), + onPress: () => Navigator.of(context).pop(), + ), + ], + ), + ), + ], + ), + ), + ), + ); +} diff --git a/forui/lib/src/widgets/scaffold.dart b/forui/lib/src/widgets/scaffold.dart index c96c9870e..abb6b86e2 100644 --- a/forui/lib/src/widgets/scaffold.dart +++ b/forui/lib/src/widgets/scaffold.dart @@ -52,8 +52,6 @@ class FScaffold extends StatefulWidget { } class _State extends State { - FSheetController? _sheet; - @override Widget build(BuildContext context) { final style = widget.style ?? context.theme.scaffoldStyle; @@ -63,14 +61,16 @@ class _State extends State { content = Padding(padding: style.contentPadding, child: content); } - return ColoredBox( - color: style.backgroundColor, - child: Column( - children: [ - if (widget.header != null) DecoratedBox(decoration: style.headerDecoration, child: widget.header!), - Expanded(child: content), - if (widget.footer != null) DecoratedBox(decoration: style.footerDecoration, child: widget.footer!), - ], + return FSheets( + child: ColoredBox( + color: style.backgroundColor, + child: Column( + children: [ + if (widget.header != null) DecoratedBox(decoration: style.headerDecoration, child: widget.header!), + Expanded(child: content), + if (widget.footer != null) DecoratedBox(decoration: style.footerDecoration, child: widget.footer!), + ], + ), ), ); } diff --git a/forui/lib/src/widgets/sheet/sheet.dart b/forui/lib/src/widgets/sheet/sheet.dart index 3a85e09cd..a1a1d159d 100644 --- a/forui/lib/src/widgets/sheet/sheet.dart +++ b/forui/lib/src/widgets/sheet/sheet.dart @@ -239,10 +239,10 @@ class _SheetState extends State with SingleTickerProviderStateMixin { @override void dispose() { - super.dispose(); if (widget.controller == null) { _controller.dispose(); } + super.dispose(); } } diff --git a/forui/lib/src/widgets/sheet/sheets.dart b/forui/lib/src/widgets/sheet/sheets.dart index 887ec1e4c..ab6932528 100644 --- a/forui/lib/src/widgets/sheet/sheets.dart +++ b/forui/lib/src/widgets/sheet/sheets.dart @@ -8,6 +8,9 @@ import 'package:meta/meta.dart'; /// Shows a sheet that appears above the current widget. It should have a [FSheets] or [FScaffold] ancestor. /// +/// The returned [FSheetController] should always be disposed after use. Not doing so can lead to the sheets +/// accumulating over time, which can negatively impact performance. +/// /// A closely related widget is a modal sheet which prevents the user from interacting with the rest of the app. /// /// [context] is used to look up the [Navigator] and [FSheetStyle] for the sheet. It is only used when the method is @@ -20,11 +23,22 @@ import 'package:meta/meta.dart'; /// is [Layout.ttb] or [Layout.btt]. Consider setting [mainAxisMaxRatio] to null if this sheet has a scrollable child, /// i.e. [ListView], along the main axis, to have the sheet be draggable. /// +/// [anchorPoint] is used to pick the closest sub-screen. +/// +/// [keepAliveOffstage] determines whether the sheet should be kept alive even when it is offstage. Setting it to true +/// retains the sheet's state even when it is not visible. Defaults to false. Keeping multiple sheets alive even when +/// offstage can negatively impact performance. +/// +/// [key] is used to identify the sheet. If a key is not provided, a random key will be generated. All sheets in a +/// [FScaffold]/[FSheets] must have unique keys. +/// /// ## Contract -/// Throws [FlutterError] if the [context] does not contain a [FSheets] or [FScaffold] ancestor. +/// Throws [FlutterError] if: +/// * the [context] does not contain a [FSheets] or [FScaffold] ancestor. +/// * a sheet with the same [key] already exists. /// /// See: -/// * https://forui.dev/docs/overlay/sheets for working examples. +/// * https://forui.dev/docs/overlay/sheet for working examples. /// * [showFModalSheet] for showing a sheet in a modal that prevents the user from interacting with the rest of the app. /// * [FSheetStyle] for customizing a switch's appearance. /// * [DraggableScrollableSheet], creates a bottom sheet that grows and then becomes scrollable once it reaches its @@ -33,7 +47,7 @@ import 'package:meta/meta.dart'; FSheetController showFSheet({ required BuildContext context, required Layout side, - required WidgetBuilder builder, + required Widget Function(BuildContext, FSheetController) builder, FSheetStyle? style, double? mainAxisMaxRatio = 9 / 16, BoxConstraints constraints = const BoxConstraints(), @@ -90,7 +104,7 @@ FSheetController showFSheet({ draggable: draggable, anchorPoint: anchorPoint, useSafeArea: useSafeArea, - builder: builder, + builder: (context) => builder(context, controller), ), ); @@ -104,8 +118,9 @@ class FSheetController { /// The sheet's key. final Key key; - /// True if the sheet to which this controller is attached should be kept alive even when it is offstage. Defaults to - /// false. Keeping multiple sheets alive even when offstage can negatively impact performance. + /// True if the sheet to which this controller is attached should be kept alive even when it is offstage. Setting it + /// to true retains the sheet's state even when it is not visible. Defaults to false. Keeping multiple sheets alive + /// even when offstage can negatively impact performance. final bool keepAliveOffstage; /// Marks the sheet as needing to be rebuilt. @@ -162,7 +177,7 @@ class FSheetController { /// interacting with the rest of the app. /// /// See: -/// * https://forui.dev/docs/overlay/sheets for working examples. +/// * https://forui.dev/docs/overlay/sheet for working examples. /// * [FSheetStyle] for customizing a switch's appearance. /// * [showFSheet] for for displaying a sheet above the current widget. /// * [showFModalSheet] for displaying a modal sheet. diff --git a/forui/test/golden/scaffold/zinc-dark-sheets.png b/forui/test/golden/scaffold/zinc-dark-sheets.png new file mode 100644 index 0000000000000000000000000000000000000000..27e6f66d11fda776953676e5d1ee17ff0891be52 GIT binary patch literal 63213 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 z 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 Gi~j*CPM6RC literal 0 HcmV?d00001 diff --git a/forui/test/src/widgets/scaffold_golden_test.dart b/forui/test/src/widgets/scaffold_golden_test.dart index 8c33e43eb..93bf1a102 100644 --- a/forui/test/src/widgets/scaffold_golden_test.dart +++ b/forui/test/src/widgets/scaffold_golden_test.dart @@ -43,6 +43,61 @@ void main() { await expectLater(find.byType(TestScaffold), matchesGoldenFile('scaffold/${theme.name}.png')); }); + + testWidgets('${theme.name} - have sheets', (tester) async { + FSheetController? controller; + + await tester.pumpWidget( + TestScaffold( + theme: theme.data, + child: FScaffold( + header: Row( + children: [ + Expanded( + child: Builder( + builder: (context) => FButton.icon( + child: FIcon(FAssets.icons.chevronRight), + onPress: () { + controller = showFSheet( + context: context, + side: Layout.ltr, + draggable: false, + builder: (context, controller) => Container( + height: double.infinity, + width: double.infinity, + decoration: BoxDecoration( + border: Border.all(color: context.theme.colorScheme.primary), + color: context.theme.colorScheme.background, + ), + child: const Center(child: Text('sheet')), + ), + ); + }, + ), + ), + ), + ], + ), + content: const Placeholder(), + footer: Row( + children: [ + Expanded( + child: Container( + decoration: const BoxDecoration(color: Colors.green), + height: 100, + ), + ), + ], + ), + ), + ), + ); + + await tester.tap(find.byType(FButton)); + await tester.pumpAndSettle(const Duration(seconds: 1)); + + await expectLater(find.byType(TestScaffold), matchesGoldenFile('scaffold/${theme.name}-sheets.png')); + }); } }); } diff --git a/forui/test/src/widgets/sheet/sheets_golden_test.dart b/forui/test/src/widgets/sheet/sheets_golden_test.dart index a418e79d2..d3d68039b 100644 --- a/forui/test/src/widgets/sheet/sheets_golden_test.dart +++ b/forui/test/src/widgets/sheet/sheets_golden_test.dart @@ -25,7 +25,7 @@ void main() { controller = showFSheet( context: context, side: side, - builder: (context) => Container( + builder: (context, controller) => Container( height: double.infinity, width: double.infinity, decoration: BoxDecoration( @@ -62,7 +62,7 @@ void main() { context: context, side: side, constraints: const BoxConstraints(maxHeight: 200, maxWidth: 200), - builder: (context) => Container( + builder: (context, controller) => Container( height: double.infinity, width: double.infinity, decoration: BoxDecoration( @@ -99,7 +99,7 @@ void main() { context: context, side: side, mainAxisMaxRatio: null, - builder: (context) => Container( + builder: (context, controller) => Container( height: double.infinity, width: double.infinity, decoration: BoxDecoration( diff --git a/forui/test/src/widgets/sheet/sheets_test.dart b/forui/test/src/widgets/sheet/sheets_test.dart index 8766fb7c5..12c8e99da 100644 --- a/forui/test/src/widgets/sheet/sheets_test.dart +++ b/forui/test/src/widgets/sheet/sheets_test.dart @@ -21,7 +21,7 @@ void main() { controller = showFSheet( context: context, side: Layout.btt, - builder: (context) => Container( + builder: (context, controller) => Container( height: double.infinity, width: double.infinity, color: context.theme.colorScheme.background, @@ -56,7 +56,7 @@ void main() { context: context, side: Layout.btt, keepAliveOffstage: true, - builder: (context) => Container( + builder: (context, controller) => Container( height: double.infinity, width: double.infinity, color: context.theme.colorScheme.background, @@ -89,7 +89,7 @@ void main() { controller = showFSheet( context: context, side: Layout.btt, - builder: (context) => Container( + builder: (context, controller) => Container( height: double.infinity, width: double.infinity, color: context.theme.colorScheme.background, @@ -120,7 +120,7 @@ void main() { key: const Key('test'), context: context, side: Layout.btt, - builder: (context) => Container( + builder: (context, controller) => Container( height: double.infinity, width: double.infinity, color: context.theme.colorScheme.background, @@ -158,7 +158,7 @@ void main() { controller = showFSheet( context: context, side: Layout.btt, - builder: (context) => Container( + builder: (context, controller) => Container( height: double.infinity, width: double.infinity, color: context.theme.colorScheme.background, @@ -197,7 +197,7 @@ void main() { controller = showFSheet( context: context, side: side, - builder: (context) => Container( + builder: (context, controller) => Container( height: double.infinity, width: double.infinity, color: context.theme.colorScheme.background, @@ -232,7 +232,7 @@ void main() { context: context, side: side, draggable: false, - builder: (context) => Container( + builder: (context, controller) => Container( height: double.infinity, width: double.infinity, color: context.theme.colorScheme.background, diff --git a/samples/lib/main.dart b/samples/lib/main.dart index 4d071203e..47203fa3e 100644 --- a/samples/lib/main.dart +++ b/samples/lib/main.dart @@ -93,6 +93,8 @@ class _AppRouter extends RootStackRouter { AutoRoute(path: '/select-tile-group/multi-value', page: SelectTileGroupMultiValueRoute.page), AutoRoute(path: '/select-tile-group/radio', page: SelectTileGroupRadioRoute.page), AutoRoute(path: '/select-tile-group/suffix', page: SelectTileGroupSuffixRoute.page), + AutoRoute(path: '/sheets/default', page: SheetsRoute.page), + AutoRoute(path: '/sheets/draggable', page: DraggableSheetsRoute.page), AutoRoute(path: '/slider/default', page: SliderRoute.page), AutoRoute(path: '/slider/tooltip', page: TooltipSliderRoute.page), AutoRoute(path: '/slider/marks', page: MarksSliderRoute.page), diff --git a/samples/lib/widgets/modal_sheet.dart b/samples/lib/widgets/modal_sheet.dart index a11d90fb5..82590e64e 100644 --- a/samples/lib/widgets/modal_sheet.dart +++ b/samples/lib/widgets/modal_sheet.dart @@ -40,7 +40,7 @@ class ModalSheetPage extends Sample { onPress: () => showFModalSheet( context: context, side: Layout.rtl, - builder: (context) => const Form(side: Layout.btt), + builder: (context) => const Form(side: Layout.rtl), ), ), const SizedBox(height: 5), diff --git a/samples/lib/widgets/sheets.dart b/samples/lib/widgets/sheets.dart new file mode 100644 index 000000000..f12f819bd --- /dev/null +++ b/samples/lib/widgets/sheets.dart @@ -0,0 +1,173 @@ +import 'package:flutter/gestures.dart'; +import 'package:flutter/material.dart'; + +import 'package:auto_route/auto_route.dart'; +import 'package:forui/forui.dart'; + +import 'package:forui_samples/sample.dart'; + +@RoutePage() +class SheetsPage extends StatefulSample { + SheetsPage({ + @queryParam super.theme, + }); + + @override + State createState() => _State(); +} + +class _State extends StatefulSampleState { + final Map _controllers = {}; + + @override + Widget sample(BuildContext context) { + VoidCallback onPress(Layout side) => () { + var controller = _controllers[side]; + if (controller == null) { + controller = _controllers[side] ??= showFSheet( + context: context, + side: side, + builder: (context, controller) => Form(side: side, controller: controller), + ); + } else { + controller.toggle(); + } + }; + + return Column( + mainAxisAlignment: MainAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + FButton( + label: const Text('Left'), + onPress: onPress(Layout.ltr), + ), + const SizedBox(height: 5), + FButton( + label: const Text('Top'), + onPress: onPress(Layout.ttb), + ), + const SizedBox(height: 5), + FButton( + label: const Text('Right'), + onPress: onPress(Layout.rtl), + ), + const SizedBox(height: 5), + FButton( + label: const Text('Bottom'), + onPress: onPress(Layout.btt), + ), + ], + ); + } + + @override + void dispose() { + for (final controller in _controllers.values) { + controller.dispose(); + } + super.dispose(); + } +} + +class Form extends StatelessWidget { + final Layout side; + final FSheetController controller; + + Form({required this.side, required this.controller, super.key}); + + @override + Widget build(BuildContext context) => Container( + height: double.infinity, + width: double.infinity, + decoration: BoxDecoration( + color: context.theme.colorScheme.background, + border: side.vertical + ? Border.symmetric(horizontal: BorderSide(color: context.theme.colorScheme.border)) + : Border.symmetric(vertical: BorderSide(color: context.theme.colorScheme.border)), + ), + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 15, vertical: 8.0), + child: Center( + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'Account', + style: context.theme.typography.xl2.copyWith( + fontWeight: FontWeight.w600, + color: context.theme.colorScheme.foreground, + height: 1.5, + ), + ), + Text( + 'Make changes to your account here. Click save when you are done.', + style: context.theme.typography.sm.copyWith( + color: context.theme.colorScheme.mutedForeground, + ), + ), + const SizedBox(height: 8), + SizedBox( + width: 450, + child: Column( + children: [ + const FTextField( + label: Text('Name'), + hint: 'John Renalo', + ), + const SizedBox(height: 10), + const FTextField( + label: Text('Email'), + hint: 'john@doe.com', + ), + const SizedBox(height: 16), + FButton( + label: const Text('Save'), + onPress: controller.toggle, + ), + ], + ), + ), + ], + ), + ), + ), + ); +} + +@RoutePage() +class DraggableSheetsPage extends Sample { + DraggableSheetsPage({ + @queryParam super.theme, + }); + + @override + Widget sample(BuildContext context) => FButton( + label: const Text('Click me'), + onPress: () => showFSheet( + context: context, + side: Layout.btt, + mainAxisMaxRatio: null, + builder: (context, _) => DraggableScrollableSheet( + expand: false, + builder: (context, controller) => ScrollConfiguration( + // This is required to enable dragging on desktop. + // See https://github.com/flutter/flutter/issues/101903 for more information. + behavior: ScrollConfiguration.of(context).copyWith( + dragDevices: { + PointerDeviceKind.touch, + PointerDeviceKind.mouse, + PointerDeviceKind.trackpad, + }, + ), + child: FTileGroup.builder( + count: 25, + controller: controller, + tileBuilder: (context, index) => FTile(title: Text('Tile $index')), + ), + ), + ), + ), + ); +}