From 9d1c3412ffc58528127b5a784663a76440b13ef9 Mon Sep 17 00:00:00 2001 From: Joe Kawai Date: Sun, 30 Jun 2024 20:00:57 +0800 Subject: [PATCH] Nested header (#57) * Implement nested header * Add tests * Add documentation * Commit from GitHub Actions (Forui Presubmit) * Refactor code to use Header.nested() * Refactor code to use FHeader.nested() * Implement nested header * Add tests * Add documentation * Commit from GitHub Actions (Forui Presubmit) * Refactor code to use Header.nested() * Commit from GitHub Actions (Forui Samples Presubmit) * Fix pr issues * Apply suggestions from code review Co-authored-by: Matthias Ngeo --------- Co-authored-by: Matthias Ngeo --- .../forui___update_golden_test_images.xml | 8 - .idea/runConfigurations/samples___run.xml | 1 + docs/.env.development | 3 +- docs/components/widget.tsx | 4 +- docs/pages/docs/button.mdx | 3 +- docs/pages/docs/header.mdx | 141 ++++++++++++- docs/pages/docs/scaffold.mdx | 4 +- forui/CHANGELOG.md | 10 + forui/example/lib/example.dart | 62 ++++++ forui/example/lib/main.dart | 78 ++------ forui/lib/src/theme/theme_data.dart | 6 +- forui/lib/src/widgets/header/header.dart | 186 +++++++----------- .../lib/src/widgets/header/header_action.dart | 92 ++++++--- .../lib/src/widgets/header/nested_header.dart | 166 ++++++++++++++++ forui/lib/src/widgets/header/root_header.dart | 156 +++++++++++++++ .../golden/header/nested/zinc-dark-header.png | Bin 0 -> 29211 bytes .../zinc-light-header.png} | Bin 28143 -> 29077 bytes .../golden/header/root/zinc-dark-header.png | Bin 0 -> 55550 bytes .../golden/header/root/zinc-light-header.png | Bin 0 -> 54542 bytes forui/test/golden/header/zinc-dark-header.png | Bin 45617 -> 0 bytes .../golden/header/zinc-dark-raw-title.png | Bin 28218 -> 0 bytes .../test/golden/header/zinc-light-header.png | Bin 44935 -> 0 bytes .../test/src/widgets/header/header_test.dart | 39 ---- .../header/nested_header_golden_test.dart | 48 +++++ ...test.dart => root_header_golden_test.dart} | 39 +--- samples/lib/main.dart | 10 +- samples/lib/widgets/header.dart | 81 ++++++-- samples/lib/widgets/scaffold.dart | 2 +- samples/pubspec.lock | 7 +- 29 files changed, 817 insertions(+), 329 deletions(-) delete mode 100644 .idea/runConfigurations/forui___update_golden_test_images.xml create mode 100644 forui/example/lib/example.dart create mode 100644 forui/lib/src/widgets/header/nested_header.dart create mode 100644 forui/lib/src/widgets/header/root_header.dart create mode 100644 forui/test/golden/header/nested/zinc-dark-header.png rename forui/test/golden/header/{zinc-light-raw-title.png => nested/zinc-light-header.png} (50%) create mode 100644 forui/test/golden/header/root/zinc-dark-header.png create mode 100644 forui/test/golden/header/root/zinc-light-header.png delete mode 100644 forui/test/golden/header/zinc-dark-header.png delete mode 100644 forui/test/golden/header/zinc-dark-raw-title.png delete mode 100644 forui/test/golden/header/zinc-light-header.png delete mode 100644 forui/test/src/widgets/header/header_test.dart create mode 100644 forui/test/src/widgets/header/nested_header_golden_test.dart rename forui/test/src/widgets/header/{header_golden_test.dart => root_header_golden_test.dart} (52%) diff --git a/.idea/runConfigurations/forui___update_golden_test_images.xml b/.idea/runConfigurations/forui___update_golden_test_images.xml deleted file mode 100644 index 5f492b8c1..000000000 --- a/.idea/runConfigurations/forui___update_golden_test_images.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/runConfigurations/samples___run.xml b/.idea/runConfigurations/samples___run.xml index 2d69cd950..4014714a0 100644 --- a/.idea/runConfigurations/samples___run.xml +++ b/.idea/runConfigurations/samples___run.xml @@ -1,5 +1,6 @@ + diff --git a/docs/.env.development b/docs/.env.development index 809b1576c..680bb5f21 100644 --- a/docs/.env.development +++ b/docs/.env.development @@ -1,2 +1 @@ -NEXT_PUBLIC_DEMO_URL=https://dev.demo.forui.dev -NEXT_PUBLIC_DEMO_URL=http://localhost:51624 \ No newline at end of file +NEXT_PUBLIC_DEMO_URL=http://localhost:3001 diff --git a/docs/components/widget.tsx b/docs/components/widget.tsx index 3048f588f..a63826ec4 100644 --- a/docs/components/widget.tsx +++ b/docs/components/widget.tsx @@ -4,10 +4,10 @@ interface Props { name: string; variant?: string; height?: number; - query: Record; + query?: Record; } -export function Widget({name, variant = 'default', height = 200, query}: Props) { +export function Widget({name, variant = 'default', height = 200, query = {}}: Props) { const {resolvedTheme} = useTheme(); query['theme'] = `zinc-${resolvedTheme}`; diff --git a/docs/pages/docs/button.mdx b/docs/pages/docs/button.mdx index 0e046eb8d..36a85097d 100644 --- a/docs/pages/docs/button.mdx +++ b/docs/pages/docs/button.mdx @@ -34,9 +34,10 @@ FButton( ```dart FButton.raw( child: Text('Button'), - onPress: () {}; + onPress: () {}, ); ``` + ## Examples ### Primary diff --git a/docs/pages/docs/header.mdx b/docs/pages/docs/header.mdx index c7500eff2..dea4c9ac6 100644 --- a/docs/pages/docs/header.mdx +++ b/docs/pages/docs/header.mdx @@ -3,15 +3,16 @@ import { Widget } from "../../components/widget"; # Header A header contains the page's title and navigation actions. +It is typically used on pages at the root of the navigation stack. - + ```dart FHeader( - title: 'Edit Alarm', + title: const Text('Edit Alarm'), actions: [ FHeaderAction( icon: FAssets.icons.alarmClock, @@ -22,18 +23,48 @@ A header contains the page's title and navigation actions. onPress: () {}, ), ], - ) + ); ``` +## Nested Header + +It is typically used on nested pages or sheets. + + + + + + + ```dart + FHeader.nested( + title: const Text('Appointment'), + leftActions: [ + FHeaderAction.back(onPress: () {}), + ], + rightActions: [ + FHeaderAction( + icon: FAssets.icons.info, + onPress: () {}, + ), + FHeaderAction( + icon: FAssets.icons.plus, + onPress: () {}, + ), + ], + ); + ``` + + + ## Usage ### `FHeader(...)` ```dart FHeader( - title: 'Edit Alarm', + title: const Text('Title'), actions: [ FHeaderAction( icon: FAssets.icons.alarmClock, @@ -44,5 +75,103 @@ FHeader( onPress: () {}, ), ], -) -``` \ No newline at end of file +); +``` + +### `FHeader.nested(...)` + +```dart +FHeader.nested( + title: const Text('Title'), + leftActions: [ + FHeaderAction.back(onPress: () {}), + ], + rightActions: [ + FHeaderAction( + icon: FAssets.icons.info, + onPress: () {}, + ), + FHeaderAction.x(onPress: () {}), + ], +); +``` + +## Examples + +### Header + + + + + + ```dart + FHeader( + title: const Text('Edit Alarm'), + actions: [ + FHeaderAction( + icon: FAssets.icons.alarmClock, + onPress: () {}, + ), + FHeaderAction( + icon: FAssets.icons.plus, + onPress: () {}, + ), + ], + ); + ``` + + + +### Nested Header with back icon + + + + + + ```dart + FHeader.nested( + title: const Text('Appointment'), + leftActions: [ + FHeaderAction.back(onPress: () {}), + ], + rightActions: [ + FHeaderAction( + icon: FAssets.icons.info, + onPress: () {}, + ), + FHeaderAction( + icon: FAssets.icons.plus, + onPress: () {}, + ), + ], + ); + ``` + + + +### Nested Header with X icon + + + + + + ```dart + FHeader.nested( + title: const Text('Climate'), + leftActions: [ + FHeaderAction( + icon: FAssets.icons.thermometer, + onPress: () {}, + ), + FHeaderAction( + icon: FAssets.icons.wind, + onPress: null, + ), + ], + rightActions: [ + FHeaderAction.x(onPress: () {}), + ], + ); + ``` + + diff --git a/docs/pages/docs/scaffold.mdx b/docs/pages/docs/scaffold.mdx index 2b46303e2..af16760f5 100644 --- a/docs/pages/docs/scaffold.mdx +++ b/docs/pages/docs/scaffold.mdx @@ -12,7 +12,7 @@ Creates a visual scaffold for Forui widgets. ```dart FScaffold( header: FHeader( - title: 'Settings', + title: const Text('Settings'), actions: [ FHeaderAction( icon: FAssets.icons.ellipsis, @@ -63,7 +63,7 @@ Creates a visual scaffold for Forui widgets. ```dart FScaffold( header: FHeader( - title: 'Settings', + title: const Text('Settings'), actions: [ FHeaderAction( icon: FAssets.icons.ellipsis, diff --git a/forui/CHANGELOG.md b/forui/CHANGELOG.md index 3a4ed739f..68f6bb14c 100644 --- a/forui/CHANGELOG.md +++ b/forui/CHANGELOG.md @@ -1,3 +1,13 @@ +## 0.2.0 + +* Add `Header.nested` widget. + +### Breaking changes + +* `FHeaderStyle` have been nested in `FHeaderStyles.rootStyle`. +* `FHeaderActionStyle.action` parameter has been renamed to `FRootHeaderStyle.actionStyle`. +* `FHeaderActionStyle.padding` parameter has been moved to `FRootHeaderStyle.actionSpacing`. + ## 0.1.0 * Initial release! 🚀 diff --git a/forui/example/lib/example.dart b/forui/example/lib/example.dart new file mode 100644 index 000000000..fe4a300cd --- /dev/null +++ b/forui/example/lib/example.dart @@ -0,0 +1,62 @@ +import 'package:flutter/material.dart'; + +import 'package:forui/forui.dart'; + +class Example extends StatefulWidget { + const Example({super.key}); + + @override + State createState() => _ExampleState(); +} + +class _ExampleState extends State { + @override + void initState() { + super.initState(); + } + + @override + Widget build(BuildContext context) => Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const SizedBox(height: 10), + Expanded( + child: FTabs( + tabs: [ + FTabEntry( + label: 'Account', + content: FCard( + title: 'Account', + subtitle: 'Make changes to your account here. Click save when you are done.', + child: Column( + children: [ + Container( + color: Colors.red, + height: 100, + ), + ], + ), + ), + ), + FTabEntry( + label: 'Password', + content: FCard( + title: 'Password', + subtitle: 'Change your password here. After saving, you will be logged out.', + child: Column( + children: [ + Container( + color: Colors.blue, + height: 100, + ) + ], + ), + ), + ), + ], + ), + ), + ], + ); +} diff --git a/forui/example/lib/main.dart b/forui/example/lib/main.dart index ab9f066fa..c9a91b563 100644 --- a/forui/example/lib/main.dart +++ b/forui/example/lib/main.dart @@ -2,6 +2,8 @@ import 'package:flutter/material.dart'; import 'package:forui/forui.dart'; +import 'package:forui_example/example.dart'; + void main() { runApp(const Application()); } @@ -15,72 +17,18 @@ class Application extends StatelessWidget { Widget build(BuildContext context) => MaterialApp( home: FTheme( data: FThemes.zinc.light, - child: const FScaffold( - header: FHeader(title: 'Example'), - content: ExampleWidget(), - ), - ), - ); -} - -class ExampleWidget extends StatefulWidget { - const ExampleWidget({super.key}); - - @override - State createState() => _ExampleWidgetState(); -} - -class _ExampleWidgetState extends State { - @override - void initState() { - super.initState(); - } - - @override - Widget build(BuildContext context) => Padding( - padding: const EdgeInsets.all(8.0), - child: Column( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - const SizedBox(height: 10), - Expanded( - child: FTabs( - tabs: [ - FTabEntry( - label: 'Account', - content: FCard( - title: 'Account', - subtitle: 'Make changes to your account here. Click save when you are done.', - child: Column( - children: [ - Container( - color: Colors.red, - height: 100, - ), - ], - ), - ), - ), - FTabEntry( - label: 'Password', - content: FCard( - title: 'Password', - subtitle: 'Change your password here. After saving, you will be logged out.', - child: Column( - children: [ - Container( - color: Colors.blue, - height: 100, - ) - ], - ), - ), - ), - ], - ), + child: FScaffold( + header: FHeader( + title: const Text('Example Example Example Example'), + actions: [ + FHeaderAction( + icon: FAssets.icons.plus, + onPress: () {}, + ), + ], ), - ], + content: const Example(), + ), ), ); } diff --git a/forui/lib/src/theme/theme_data.dart b/forui/lib/src/theme/theme_data.dart index c988abee1..f40f628a2 100644 --- a/forui/lib/src/theme/theme_data.dart +++ b/forui/lib/src/theme/theme_data.dart @@ -38,7 +38,7 @@ final class FThemeData with Diagnosticable { final FDialogStyle dialogStyle; /// The header styles. - final FHeaderStyle headerStyle; + final FHeaderStyles headerStyle; /// The tabs styles. final FTabsStyle tabsStyle; @@ -93,7 +93,7 @@ final class FThemeData with Diagnosticable { buttonStyles: FButtonStyles.inherit(colorScheme: colorScheme, typography: typography, style: style), cardStyle: FCardStyle.inherit(colorScheme: colorScheme, typography: typography, style: style), dialogStyle: FDialogStyle.inherit(colorScheme: colorScheme, typography: typography, style: style), - headerStyle: FHeaderStyle.inherit(colorScheme: colorScheme, typography: typography, style: style), + headerStyle: FHeaderStyles.inherit(colorScheme: colorScheme, typography: typography, style: style), tabsStyle: FTabsStyle.inherit(colorScheme: colorScheme, typography: typography, style: style), textFieldStyle: FTextFieldStyle.inherit(colorScheme: colorScheme, typography: typography, style: style), scaffoldStyle: FScaffoldStyle.inherit(colorScheme: colorScheme, style: style), @@ -127,7 +127,7 @@ final class FThemeData with Diagnosticable { FButtonStyles? buttonStyles, FCardStyle? cardStyle, FDialogStyle? dialogStyle, - FHeaderStyle? headerStyle, + FHeaderStyles? headerStyle, FTabsStyle? tabsStyle, FTextFieldStyle? textFieldStyle, FScaffoldStyle? scaffoldStyle, diff --git a/forui/lib/src/widgets/header/header.dart b/forui/lib/src/widgets/header/header.dart index d3e0c4f5e..c7439b761 100644 --- a/forui/lib/src/widgets/header/header.dart +++ b/forui/lib/src/widgets/header/header.dart @@ -8,158 +8,104 @@ import 'package:forui/src/foundation/tappable.dart'; part 'header_action.dart'; +part 'root_header.dart'; + +part 'nested_header.dart'; + /// A header. /// -/// A header contains the page's title and navigation actions. It is typically used on pages at the root of the -/// navigation stack. +/// A header contains the page's title and actions. /// /// See: /// * https://forui.dev/docs/header for working examples. -/// * [FHeaderStyle] for customizing a header's appearance. -class FHeader extends StatelessWidget { - /// The header's style. Defaults to [FThemeData.headerStyle]. - final FHeaderStyle? style; - - /// The title, aligned to the left. - /// - /// ## Contract: - /// Throws [AssertionError]: - /// * if [title] and [rawTitle] are both not null - /// * if [title] and [rawTitle] are both null - final String? title; +/// * [FRootHeaderStyle] and [FNestedHeaderStyle] for customizing a header's appearance. +sealed class FHeader extends StatelessWidget { + const FHeader._({super.key}); - /// The title, aligned to the left. + /// Creates a header. /// - /// ## Contract: - /// Throws [AssertionError]: - /// * if [title] and [rawTitle] are both not null - /// * if [title] and [rawTitle] are both null - final Widget? rawTitle; - - /// The actions, aligned to the right. Defaults to an empty list. - final List actions; - - /// Creates a [FHeader]. + /// It is typically used on pages at the root of the navigation stack. + const factory FHeader({ + required Widget title, + FRootHeaderStyle? style, + List actions, + Key? key, + }) = _FRootHeader; + + /// Creates a nested header. /// - /// ## Contract: - /// Throws [AssertionError]: - /// * if [title] and [rawTitle] are both not null - /// * if [title] and [rawTitle] are both null - const FHeader({ - this.style, - this.title, - this.rawTitle, - this.actions = const [], - super.key, - }) : assert((title != null) ^ (rawTitle != null), 'title or rawTitle must be provided, but not both.'); - - @override - Widget build(BuildContext context) { - final style = this.style ?? context.theme.headerStyle; - - final title = switch ((this.title, rawTitle)) { - (final String title, _) => Text(title), - (_, final Widget title) => title, - _ => const Placeholder(), - }; - - return SafeArea( - bottom: false, - child: Padding( - padding: style.padding, - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Expanded( - child: DefaultTextStyle.merge( - overflow: TextOverflow.fade, - maxLines: 1, - softWrap: false, - style: style.titleTextStyle, - child: title, - ), - ), - Row(children: actions), - ], - ), - ), - ); - } - - @override - void debugFillProperties(DiagnosticPropertiesBuilder properties) { - super.debugFillProperties(properties); - properties - ..add(DiagnosticsProperty('style', style)) - ..add(StringProperty('title', title)) - ..add(IterableProperty('actions', actions)); - } + /// It is typically used on pages NOT at the root of the navigation stack. + const factory FHeader.nested({ + required Widget title, + FNestedHeaderStyle? style, + List leftActions, + List rightActions, + Key? key, + }) = _FNestedHeader; } -/// [FHeader]'s style. -final class FHeaderStyle with Diagnosticable { - /// The title's [TextStyle]. - final TextStyle titleTextStyle; - - /// The [FHeaderAction]'s style. - final FHeaderActionStyle action; +/// [FHeader]'s styles. +final class FHeaderStyles with Diagnosticable { + /// The root header's style. + final FRootHeaderStyle rootStyle; - /// The padding. - final EdgeInsets padding; + /// The nested header's style. + final FNestedHeaderStyle nestedStyle; - /// Creates a [FHeaderStyle]. - FHeaderStyle({ - required this.titleTextStyle, - required this.action, - required this.padding, + /// Creates a [FHeaderStyles]. + const FHeaderStyles({ + required this.rootStyle, + required this.nestedStyle, }); - /// Creates a [FHeaderStyle] that inherits its properties from the given [FColorScheme] and [FTypography]. - FHeaderStyle.inherit({ + /// Creates a [FHeaderStyles] that inherits its properties from the given [FColorScheme], [FTypography] and [FStyle]. + FHeaderStyles.inherit({ required FColorScheme colorScheme, required FTypography typography, required FStyle style, - }) : titleTextStyle = typography.xl3.copyWith( - color: colorScheme.foreground, - fontWeight: FontWeight.w700, - height: 1, - ), - action = FHeaderActionStyle.inherit(colorScheme: colorScheme), - padding = style.pagePadding.copyWith(bottom: 15); - - /// Returns a copy of this [FHeaderStyle] with the given properties replaced. + }) : rootStyle = FRootHeaderStyle.inherit(colorScheme: colorScheme, typography: typography, style: style), + nestedStyle = FNestedHeaderStyle.inherit(colorScheme: colorScheme, typography: typography, style: style); + + /// Returns a copy of this [FHeaderStyles] with the given properties replaced. /// /// ```dart /// final style = FHeaderStyle( - /// titleTextStyle: ..., - /// action: ..., + /// rootStyle: ..., + /// nestedStyle: ..., /// ); /// /// final copy = style.copyWith( - /// action: ..., + /// nestedStyle: ..., /// ); /// - /// print(style.titleTextStyle == copy.titleTextStyle); // true - /// print(style.action == copy.action); // false + /// print(style.rootStyle == copy.rootStyle); // true + /// print(style.nestedStyle == copy.nestedStyle); // false /// ``` - @useResult - FHeaderStyle copyWith({ - TextStyle? titleTextStyle, - FHeaderActionStyle? action, - EdgeInsets? padding, + FHeaderStyles copyWith({ + FRootHeaderStyle? rootStyle, + FNestedHeaderStyle? nestedStyle, }) => - FHeaderStyle( - titleTextStyle: titleTextStyle ?? this.titleTextStyle, - action: action ?? this.action, - padding: padding ?? this.padding, + FHeaderStyles( + rootStyle: rootStyle ?? this.rootStyle, + nestedStyle: nestedStyle ?? this.nestedStyle, ); @override void debugFillProperties(DiagnosticPropertiesBuilder properties) { super.debugFillProperties(properties); properties - ..add(DiagnosticsProperty('titleTextStyle', titleTextStyle)) - ..add(DiagnosticsProperty('action', action)) - ..add(DiagnosticsProperty('padding', padding)); + ..add(DiagnosticsProperty('rootStyle', rootStyle)) + ..add(DiagnosticsProperty('nestedStyle', nestedStyle)); } + + @override + bool operator ==(Object other) => + identical(this, other) || + other is FHeaderStyles && + runtimeType == other.runtimeType && + rootStyle == other.rootStyle && + nestedStyle == other.nestedStyle; + + @override + int get hashCode => rootStyle.hashCode ^ nestedStyle.hashCode; } diff --git a/forui/lib/src/widgets/header/header_action.dart b/forui/lib/src/widgets/header/header_action.dart index 9c16973af..15ed8471a 100644 --- a/forui/lib/src/widgets/header/header_action.dart +++ b/forui/lib/src/widgets/header/header_action.dart @@ -29,22 +29,45 @@ class FHeaderAction extends StatelessWidget { super.key, }); + /// Creates a [FHeaderAction] with [FAssets.icons.arrowLeft]. + factory FHeaderAction.back({ + required VoidCallback? onPress, + FHeaderActionStyle? style, + Key? key, + }) => + FHeaderAction( + icon: FAssets.icons.arrowLeft, + onPress: onPress, + style: style, + key: key, + ); + + /// Creates a [FHeaderAction] with [FAssets.icons.x]. + factory FHeaderAction.x({ + required VoidCallback? onPress, + FHeaderActionStyle? style, + Key? key, + }) => + FHeaderAction( + icon: FAssets.icons.x, + onPress: onPress, + style: style, + key: key, + ); + @override Widget build(BuildContext context) { - final style = this.style ?? context.theme.headerStyle.action; + final style = FHeaderActionStyle._of(context); final enabled = onPress != null || onLongPress != null; - return Padding( - padding: style.padding, - child: MouseRegion( - cursor: enabled ? SystemMouseCursors.click : MouseCursor.defer, - child: FTappable( - onTap: onPress, - onLongPress: onLongPress, - child: icon( - height: style.size, - colorFilter: ColorFilter.mode(onPress == null ? style.disabledColor : style.enabledColor, BlendMode.srcIn), - ), + return MouseRegion( + cursor: enabled ? SystemMouseCursors.click : MouseCursor.defer, + child: FTappable( + onTap: onPress, + onLongPress: onLongPress, + child: icon( + height: style.size, + colorFilter: ColorFilter.mode(onPress == null ? style.disabledColor : style.enabledColor, BlendMode.srcIn), ), ), ); @@ -63,32 +86,35 @@ class FHeaderAction extends StatelessWidget { /// [FHeaderAction]'s style. class FHeaderActionStyle with Diagnosticable { + @useResult + static FHeaderActionStyle _of(BuildContext context) => + context.dependOnInheritedWidgetOfExactType<_InheritedActionStyle>()?.style ?? + context.theme.headerStyle.rootStyle.actionStyle; + /// The icon's color when this action is enabled. final Color enabledColor; /// The icon's color when this action is disabled. final Color disabledColor; - /// The icon's size. Defaults to 30. + /// The icon's size. + /// + /// Defaults to: + /// * 30 for [FHeader]. + /// * 25 for [FHeader.nested] final double size; - /// The padding. Defaults to `EdgeInsets.only(left: 10)`. - final EdgeInsets padding; - /// Creates a [FHeaderActionStyle]. FHeaderActionStyle({ required this.enabledColor, required this.disabledColor, - this.size = 30, - this.padding = const EdgeInsets.only(left: 10), + required this.size, }); /// Creates a [FHeaderActionStyle] that inherits its properties from the given [FColorScheme]. - FHeaderActionStyle.inherit({required FColorScheme colorScheme}) + FHeaderActionStyle.inherit({required FColorScheme colorScheme, required this.size}) : enabledColor = colorScheme.foreground, - disabledColor = colorScheme.foreground.withOpacity(0.5), - size = 30, - padding = const EdgeInsets.only(left: 10); + disabledColor = colorScheme.foreground.withOpacity(0.5); /// Returns a copy of this [FHeaderActionStyle] with the given properties replaced. /// @@ -116,7 +142,6 @@ class FHeaderActionStyle with Diagnosticable { enabledColor: enabledColor ?? this.enabledColor, disabledColor: disabledColor ?? this.disabledColor, size: size ?? this.size, - padding: padding ?? this.padding, ); @override @@ -125,7 +150,24 @@ class FHeaderActionStyle with Diagnosticable { properties ..add(ColorProperty('enabledColor', enabledColor)) ..add(ColorProperty('disabledColor', disabledColor)) - ..add(DoubleProperty('size', size, defaultValue: 30)) - ..add(DiagnosticsProperty('padding', padding, defaultValue: const EdgeInsets.only(left: 10))); + ..add(DoubleProperty('size', size)); + } +} + +class _InheritedActionStyle extends InheritedWidget { + final FHeaderActionStyle style; + + const _InheritedActionStyle({ + required this.style, + required super.child, + }); + + @override + bool updateShouldNotify(_InheritedActionStyle oldWidget) => style != oldWidget.style; + + @override + void debugFillProperties(DiagnosticPropertiesBuilder properties) { + super.debugFillProperties(properties); + properties.add(DiagnosticsProperty('style', style)); } } diff --git a/forui/lib/src/widgets/header/nested_header.dart b/forui/lib/src/widgets/header/nested_header.dart new file mode 100644 index 000000000..2e578b5d0 --- /dev/null +++ b/forui/lib/src/widgets/header/nested_header.dart @@ -0,0 +1,166 @@ +part of 'header.dart'; + +/// A nested header. +/// +/// A nested header contains the page's title and actions (including pop navigation). +/// It is typically used on pages that are not at the root of the navigation stack. +/// +/// See: +/// * https://forui.dev/docs/header for working examples. +/// * [FNestedHeaderStyle] for customizing a header's appearance. +final class _FNestedHeader extends FHeader { + /// The style. Defaults to [FThemeData.headerStyle.nestedStyle]. + final FNestedHeaderStyle? style; + + /// The title, aligned to the center. + final Widget title; + + /// The actions, aligned to the left. Defaults to an empty list. + final List leftActions; + + /// The actions, aligned to the right. Defaults to an empty list. + final List rightActions; + + /// Creates a [_FNestedHeader]. + const _FNestedHeader({ + required this.title, + this.style, + this.leftActions = const [], + this.rightActions = const [], + super.key, + }) : super._(); + + @override + Widget build(BuildContext context) { + final style = this.style ?? context.theme.headerStyle.nestedStyle; + + return SafeArea( + bottom: false, + child: Padding( + padding: style.padding, + child: Stack( + children: [ + _InheritedActionStyle( + style: style.actionStyle, + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row(children: leftActions.expand((action) => [action, const SizedBox(width: 10)]).toList()), + Row(children: rightActions.expand((action) => [const SizedBox(width: 10), action]).toList()), + ], + ), + ), + Positioned.fill( + child: Align( + child: DefaultTextStyle.merge( + overflow: TextOverflow.fade, + maxLines: 1, + softWrap: false, + style: style.titleTextStyle, + child: title, + ), + ), + ), + ], + ), + ), + ); + } + + @override + void debugFillProperties(DiagnosticPropertiesBuilder properties) { + super.debugFillProperties(properties); + properties + ..add(DiagnosticsProperty('style', style)) + ..add(IterableProperty('leftActions', leftActions)) + ..add(IterableProperty('rightActions', rightActions)); + } +} + +/// [FHeader.nested]'s style. +final class FNestedHeaderStyle with Diagnosticable { + /// The title's [TextStyle]. + final TextStyle titleTextStyle; + + /// The [FHeaderAction]s' style. + final FHeaderActionStyle actionStyle; + + /// The spacing between [FHeaderAction]s. + final double actionSpacing; + + /// The padding. + final EdgeInsets padding; + + /// Creates a [FNestedHeaderStyle]. + const FNestedHeaderStyle({ + required this.titleTextStyle, + required this.actionStyle, + required this.actionSpacing, + required this.padding, + }); + + /// Creates a [FNestedHeaderStyle] that inherits its properties from the given [FColorScheme], [FTypography] and [FStyle]. + FNestedHeaderStyle.inherit({ + required FColorScheme colorScheme, + required FTypography typography, + required FStyle style, + }) : titleTextStyle = typography.xl.copyWith( + color: colorScheme.foreground, + fontWeight: FontWeight.w600, + height: 1, + ), + actionStyle = FHeaderActionStyle.inherit(colorScheme: colorScheme, size: 25), + actionSpacing = 10, + padding = style.pagePadding.copyWith(bottom: 15); + + /// Returns a copy of this [FNestedHeaderStyle] with the given properties replaced. + /// + /// ```dart + /// final style = FNestedHeaderStyle( + /// titleTextStyle: ..., + /// leftAction: ..., + /// ); + /// + /// final copy = style.copyWith( + /// leftAction: ..., + /// ); + /// + /// print(style.titleTextStyle == copy.titleTextStyle); // true + /// print(style.leftAction == copy.leftAction); // false + /// ``` + FNestedHeaderStyle copyWith({ + TextStyle? titleTextStyle, + FHeaderActionStyle? actionStyle, + double? actionSpacing, + EdgeInsets? padding, + }) => + FNestedHeaderStyle( + titleTextStyle: titleTextStyle ?? this.titleTextStyle, + actionStyle: actionStyle ?? this.actionStyle, + actionSpacing: actionSpacing ?? this.actionSpacing, + padding: padding ?? this.padding, + ); + + @override + void debugFillProperties(DiagnosticPropertiesBuilder properties) { + super.debugFillProperties(properties); + properties + ..add(DiagnosticsProperty('titleTextStyle', titleTextStyle)) + ..add(DiagnosticsProperty('actionStyle', actionStyle)) + ..add(DiagnosticsProperty('actionSpacing', actionSpacing)) + ..add(DiagnosticsProperty('padding', padding)); + } + + @override + bool operator ==(Object other) => + identical(this, other) || + other is FNestedHeaderStyle && + runtimeType == other.runtimeType && + titleTextStyle == other.titleTextStyle && + actionStyle == other.actionStyle && + actionSpacing == other.actionSpacing && + padding == other.padding; + + @override + int get hashCode => titleTextStyle.hashCode ^ actionStyle.hashCode ^ actionSpacing.hashCode ^ padding.hashCode; +} diff --git a/forui/lib/src/widgets/header/root_header.dart b/forui/lib/src/widgets/header/root_header.dart new file mode 100644 index 000000000..ffeb51e77 --- /dev/null +++ b/forui/lib/src/widgets/header/root_header.dart @@ -0,0 +1,156 @@ +part of 'header.dart'; + +/// A root header. +/// +/// A root header contains the page's title and actions. +/// It is typically used on pages at the root of the navigation stack. +/// +/// See: +/// * https://forui.dev/docs/header for working examples. +/// * [FRootHeaderStyle] for customizing a header's appearance. +final class _FRootHeader extends FHeader { + /// The header's style. Defaults to [FThemeData.headerStyle.rootStyle]. + final FRootHeaderStyle? style; + + /// The title, aligned to the left. + final Widget title; + + /// The actions, aligned to the right. Defaults to an empty list. + final List actions; + + /// Creates a [FHeader]. + const _FRootHeader({ + required this.title, + this.style, + this.actions = const [], + super.key, + }) : super._(); + + @override + Widget build(BuildContext context) { + final style = this.style ?? context.theme.headerStyle.rootStyle; + + return SafeArea( + bottom: false, + child: Padding( + padding: style.padding, + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Expanded( + child: DefaultTextStyle.merge( + overflow: TextOverflow.fade, + maxLines: 1, + softWrap: false, + style: style.titleTextStyle, + child: title, + ), + ), + _InheritedActionStyle( + style: style.actionStyle, + child: Row(children: actions.expand((action) => [action, const SizedBox(width: 10)]).toList()), + ), + ], + ), + ), + ); + } + + @override + void debugFillProperties(DiagnosticPropertiesBuilder properties) { + super.debugFillProperties(properties); + properties + ..add(DiagnosticsProperty('style', style)) + ..add(DiagnosticsProperty('title', title)) + ..add(IterableProperty('actions', actions)); + } +} + +/// [FHeader.new]'s style. +final class FRootHeaderStyle with Diagnosticable { + /// The title's [TextStyle]. + final TextStyle titleTextStyle; + + /// The [FHeaderAction]'s style. + final FHeaderActionStyle actionStyle; + + /// The spacing between [FHeaderAction]s. + final double actionSpacing; + + /// The padding. + final EdgeInsets padding; + + /// Creates a [FRootHeaderStyle]. + FRootHeaderStyle({ + required this.titleTextStyle, + required this.actionStyle, + required this.actionSpacing, + required this.padding, + }); + + /// Creates a [FRootHeaderStyle] that inherits its properties from the given [FColorScheme], [FTypography] and [FStyle]. + FRootHeaderStyle.inherit({ + required FColorScheme colorScheme, + required FTypography typography, + required FStyle style, + }) : titleTextStyle = typography.xl3.copyWith( + color: colorScheme.foreground, + fontWeight: FontWeight.w700, + height: 1, + ), + actionStyle = FHeaderActionStyle.inherit(colorScheme: colorScheme, size: 30), + actionSpacing = 10, + padding = style.pagePadding.copyWith(bottom: 15); + + /// Returns a copy of this [FRootHeaderStyle] with the given properties replaced. + /// + /// ```dart + /// final style = FHeaderStyle( + /// titleTextStyle: ..., + /// action: ..., + /// ); + /// + /// final copy = style.copyWith( + /// action: ..., + /// ); + /// + /// print(style.titleTextStyle == copy.titleTextStyle); // true + /// print(style.action == copy.action); // false + /// ``` + @useResult + FRootHeaderStyle copyWith({ + TextStyle? titleTextStyle, + FHeaderActionStyle? actionStyle, + double? actionSpacing, + EdgeInsets? padding, + }) => + FRootHeaderStyle( + titleTextStyle: titleTextStyle ?? this.titleTextStyle, + actionStyle: actionStyle ?? this.actionStyle, + actionSpacing: actionSpacing ?? this.actionSpacing, + padding: padding ?? this.padding, + ); + + @override + void debugFillProperties(DiagnosticPropertiesBuilder properties) { + super.debugFillProperties(properties); + properties + ..add(DiagnosticsProperty('titleTextStyle', titleTextStyle)) + ..add(DiagnosticsProperty('action', actionStyle)) + ..add(DiagnosticsProperty('actionSpacing', actionSpacing)) + ..add(DiagnosticsProperty('padding', padding)); + } + + @override + bool operator ==(Object other) => + identical(this, other) || + other is FRootHeaderStyle && + runtimeType == other.runtimeType && + titleTextStyle == other.titleTextStyle && + actionStyle == other.actionStyle && + actionSpacing == other.actionSpacing && + padding == other.padding; + + @override + int get hashCode => titleTextStyle.hashCode ^ actionStyle.hashCode ^ actionSpacing.hashCode ^ padding.hashCode; +} diff --git a/forui/test/golden/header/nested/zinc-dark-header.png b/forui/test/golden/header/nested/zinc-dark-header.png new file mode 100644 index 0000000000000000000000000000000000000000..4e5ff59811a3fdbd2bae53997b82ba0eda2e4007 GIT binary patch literal 29211 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

y6s|H>* z@T!4V4IlzMD&SE8j|zBHz@q}*Ao))f{LiOo;%L<;@P`HbIDaF6S1`PS;T6pPqG0}i zDiSwR{69Yovz=i_xE|o8{L9Z@g^>8~kLy8B^S-^FbY4u>8Odmo8B5O`rCR;9O&DV5VPm{@VTj0jHgDj{pDw diff --git a/forui/test/golden/header/root/zinc-dark-header.png b/forui/test/golden/header/root/zinc-dark-header.png new file mode 100644 index 0000000000000000000000000000000000000000..51bd97489a9a1bede8d0a17220f952a9c74f23c9 GIT binary patch literal 55550 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 U= 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 S-LA*TuT@jgQqE8^5Be`C+=6%j diff --git a/forui/test/golden/header/zinc-dark-raw-title.png b/forui/test/golden/header/zinc-dark-raw-title.png deleted file mode 100644 index f8f0847cf39f4d3b6a810d351537a5362805c0c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28218 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 aKp65nJ=`LGJ#-5B3k~&)XR&8&Z~Yfd1E=Ev diff --git a/forui/test/src/widgets/header/header_test.dart b/forui/test/src/widgets/header/header_test.dart deleted file mode 100644 index 22743a29d..000000000 --- a/forui/test/src/widgets/header/header_test.dart +++ /dev/null @@ -1,39 +0,0 @@ -import 'package:flutter/material.dart'; - -import 'package:flutter_test/flutter_test.dart'; - -import 'package:forui/forui.dart'; - -void main() { - group('FHeader', () { - for (final (title, rawTitle) in [ - ('', null), - (null, const SizedBox()), - ]) { - testWidgets('constructor does not throw error', (tester) async { - expect( - () => FHeader( - title: title, - rawTitle: rawTitle, - ), - returnsNormally, - ); - }); - } - - for (final (title, rawTitle) in [ - (null, null), - ('', const SizedBox()), - ]) { - testWidgets('constructor throws error', (tester) async { - expect( - () => FHeader( - title: title, - rawTitle: rawTitle, - ), - throwsAssertionError, - ); - }); - } - }); -} diff --git a/forui/test/src/widgets/header/nested_header_golden_test.dart b/forui/test/src/widgets/header/nested_header_golden_test.dart new file mode 100644 index 000000000..bca8ffa74 --- /dev/null +++ b/forui/test/src/widgets/header/nested_header_golden_test.dart @@ -0,0 +1,48 @@ +@Tags(['golden']) +library; + +import 'package:flutter/widgets.dart'; + +import 'package:flutter_test/flutter_test.dart'; + +import 'package:forui/forui.dart'; +import '../../test_scaffold.dart'; + +void main() { + group('FNestedHeader', () { + for (final (name, theme, _) in TestScaffold.themes) { + testWidgets('$name with FNestedHeader actions', (tester) async { + await tester.pumpWidget( + TestScaffold( + data: theme, + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 20), + child: FHeader.nested( + title: const Text('Title'), + leftActions: [ + FHeaderAction.back(onPress: () {}), + FHeaderAction( + icon: FAssets.icons.alarmClock, + onPress: null, + ), + ], + rightActions: [ + FHeaderAction( + icon: FAssets.icons.plus, + onPress: () {}, + ), + FHeaderAction.x(onPress: () {}), + ], + ), + ), + ), + ); + + await expectLater( + find.byType(TestScaffold), + matchesGoldenFile('header/nested/$name-header.png'), + ); + }); + } + }); +} diff --git a/forui/test/src/widgets/header/header_golden_test.dart b/forui/test/src/widgets/header/root_header_golden_test.dart similarity index 52% rename from forui/test/src/widgets/header/header_golden_test.dart rename to forui/test/src/widgets/header/root_header_golden_test.dart index 5bb84e2ce..bc1645ad4 100644 --- a/forui/test/src/widgets/header/header_golden_test.dart +++ b/forui/test/src/widgets/header/root_header_golden_test.dart @@ -1,7 +1,7 @@ @Tags(['golden']) library; -import 'package:flutter/cupertino.dart'; +import 'package:flutter/widgets.dart'; import 'package:flutter_test/flutter_test.dart'; @@ -12,16 +12,16 @@ const title = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.'; void main() { - group('FHeader', () { + group('FRootHeader', () { for (final (name, theme, _) in TestScaffold.themes) { - testWidgets('$name with FHeader actions', (tester) async { + testWidgets('$name with FRootHeader actions', (tester) async { await tester.pumpWidget( TestScaffold( data: theme, child: Padding( padding: const EdgeInsets.symmetric(horizontal: 20), child: FHeader( - title: title, + title: const Text(title), actions: [ FHeaderAction( icon: FAssets.icons.alarmClock, @@ -39,36 +39,7 @@ void main() { await expectLater( find.byType(TestScaffold), - matchesGoldenFile('header/$name-header.png'), - ); - }); - - testWidgets('$name with raw title', (tester) async { - await tester.pumpWidget( - TestScaffold( - data: theme, - child: Padding( - padding: const EdgeInsets.symmetric(horizontal: 20), - child: FHeader( - rawTitle: const Text('Title'), - actions: [ - FHeaderAction( - icon: FAssets.icons.alarmClock, - onPress: null, - ), - FHeaderAction( - icon: FAssets.icons.plus, - onPress: () {}, - ), - ], - ), - ), - ), - ); - - await expectLater( - find.byType(TestScaffold), - matchesGoldenFile('header/$name-raw-title.png'), + matchesGoldenFile('header/root/$name-header.png'), ); }); } diff --git a/samples/lib/main.dart b/samples/lib/main.dart index a0c62dbcf..acb2aac51 100644 --- a/samples/lib/main.dart +++ b/samples/lib/main.dart @@ -60,7 +60,15 @@ class _AppRouter extends $_AppRouter { ), AutoRoute( path: '/header/default', - page: HeaderRoute.page, + page: RootHeaderRoute.page, + ), + AutoRoute( + path: '/header/nested', + page: NestedHeaderRoute.page, + ), + AutoRoute( + path: '/header/nested-x', + page: XNestedHeaderRoute.page, ), AutoRoute( path: '/tabs/default', diff --git a/samples/lib/widgets/header.dart b/samples/lib/widgets/header.dart index 88f763b8f..41412d02c 100644 --- a/samples/lib/widgets/header.dart +++ b/samples/lib/widgets/header.dart @@ -6,26 +6,73 @@ import 'package:forui/forui.dart'; import 'package:forui_samples/sample_scaffold.dart'; @RoutePage() -class HeaderPage extends SampleScaffold { - HeaderPage({ +class RootHeaderPage extends SampleScaffold { + RootHeaderPage({ @queryParam super.theme, }); @override - Widget child(BuildContext context) => Padding( - padding: const EdgeInsets.symmetric(horizontal: 20), - child: FHeader( - title: 'Edit Alarm', - actions: [ - FHeaderAction( - icon: FAssets.icons.alarmClock, - onPress: () {}, - ), - FHeaderAction( - icon: FAssets.icons.plus, - onPress: () {}, - ), - ], - ), + Widget child(BuildContext context) => FHeader( + title: const Text('Edit Alarm'), + actions: [ + FHeaderAction( + icon: FAssets.icons.alarmClock, + onPress: () {}, + ), + FHeaderAction( + icon: FAssets.icons.plus, + onPress: () {}, + ), + ], + ); +} + +@RoutePage() +class NestedHeaderPage extends SampleScaffold { + NestedHeaderPage({ + @queryParam super.theme, + }); + + @override + Widget child(BuildContext context) => FHeader.nested( + title: const Text('Appointment'), + leftActions: [ + FHeaderAction.back(onPress: () {}), + ], + rightActions: [ + FHeaderAction( + icon: FAssets.icons.info, + onPress: () {}, + ), + FHeaderAction( + icon: FAssets.icons.plus, + onPress: () {}, + ), + ], + ); +} + +@RoutePage() +class XNestedHeaderPage extends SampleScaffold { + XNestedHeaderPage({ + @queryParam super.theme, + }); + + @override + Widget child(BuildContext context) => FHeader.nested( + title: const Text('Climate'), + leftActions: [ + FHeaderAction( + icon: FAssets.icons.thermometer, + onPress: () {}, + ), + FHeaderAction( + icon: FAssets.icons.wind, + onPress: null, + ), + ], + rightActions: [ + FHeaderAction.x(onPress: () {}), + ], ); } diff --git a/samples/lib/widgets/scaffold.dart b/samples/lib/widgets/scaffold.dart index d9e8ba725..15b496541 100644 --- a/samples/lib/widgets/scaffold.dart +++ b/samples/lib/widgets/scaffold.dart @@ -20,7 +20,7 @@ class ScaffoldPage extends SampleScaffold { height: 420, child: FScaffold( header: FHeader( - title: 'Settings', + title: const Text('Settings'), actions: [ FHeaderAction( icon: FAssets.icons.ellipsis, diff --git a/samples/pubspec.lock b/samples/pubspec.lock index 19ef9c15f..1968c4c27 100644 --- a/samples/pubspec.lock +++ b/samples/pubspec.lock @@ -271,9 +271,10 @@ packages: forui_assets: dependency: transitive description: - path: "../forui_assets" - relative: true - source: path + name: forui_assets + sha256: a68dcbb7e6f669f495a0bcf6464f6e28197744318aabeb28aa0bb3c8435cde14 + url: "https://pub.dev" + source: hosted version: "0.1.0" frontend_server_client: dependency: transitive