Skip to content

Commit

Permalink
fix: Add paddingWhenNotFullWidth.
Browse files Browse the repository at this point in the history
  • Loading branch information
mathrunet committed Mar 2, 2023
1 parent d13616c commit 90aee16
Show file tree
Hide file tree
Showing 7 changed files with 87 additions and 12 deletions.
2 changes: 1 addition & 1 deletion packages/masamune/lib/universal/universal_app_bar.dart
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ class UniversalAppBar extends StatelessWidget {
/// You can specify the breakpoint at which the UI will change to a mobile-oriented UI.
///
/// UIがモバイル向けのUIに変化するブレークポイントを指定できます。
final ResponsiveContainerType? breakpoint;
final ResponsiveBreakpoint? breakpoint;

/// If this is enabled, it will appear as a sliver scroll view.
///
Expand Down
21 changes: 20 additions & 1 deletion packages/masamune/lib/universal/universal_grid_builder.dart
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,7 @@ class UniversalGridBuilder<T> extends GridBuilder<T> {
this.scrollBehavior,
this.onRefresh,
this.showScrollbarWhenDesktopOrWeb = true,
this.paddingWhenNotFullWidth,
}) : super.count(
key: key,
scrollDirection: scrollDirection,
Expand Down Expand Up @@ -195,6 +196,7 @@ class UniversalGridBuilder<T> extends GridBuilder<T> {
this.scrollBehavior,
this.onRefresh,
this.showScrollbarWhenDesktopOrWeb = true,
this.paddingWhenNotFullWidth,
}) : super.extent(
key: key,
scrollDirection: scrollDirection,
Expand Down Expand Up @@ -223,6 +225,11 @@ class UniversalGridBuilder<T> extends GridBuilder<T> {
mainAxisExtent: mainAxisExtent,
);

/// [padding] when the width does not exceed [UniversalScaffold.breakpoint] and the width is fixed.If [Null], [padding] is used.
///
/// 横幅が[UniversalScaffold.breakpoint]を超えない場合、横幅が固定されているときの[padding][Null]の場合は[padding]が利用されます。
final EdgeInsetsGeometry? paddingWhenNotFullWidth;

/// Method called by [RefreshIndicator].
///
/// Pull-to-Refresh will execute and display an indicator until [Future] is returned.
Expand Down Expand Up @@ -360,7 +367,8 @@ class UniversalGridBuilder<T> extends GridBuilder<T> {
final breakpoint = ResponsiveScaffold.of(context)?.breakpoint;
final maxWidth = (breakpoint?.width(context) ?? width).limitHigh(width);
final responsivePadding = (width - maxWidth) / 2.0;
final resolvedPadding = padding?.resolve(TextDirection.ltr);
final resolvedPadding =
_effectivePadding(context, breakpoint)?.resolve(TextDirection.ltr);
final generatedPadding = EdgeInsets.fromLTRB(
(resolvedPadding?.left ?? 0.0) + responsivePadding,
resolvedPadding?.top ?? 0.0,
Expand All @@ -373,4 +381,15 @@ class UniversalGridBuilder<T> extends GridBuilder<T> {
sliver: sliver,
);
}

EdgeInsetsGeometry? _effectivePadding(
BuildContext context,
ResponsiveBreakpoint? breakpoint,
) {
if (breakpoint?.width(context) == double.infinity) {
return padding;
} else {
return paddingWhenNotFullWidth ?? padding;
}
}
}
21 changes: 20 additions & 1 deletion packages/masamune/lib/universal/universal_grid_view.dart
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@ class UniversalGridView extends StatelessWidget {
this.onRefresh,
this.showScrollbarWhenDesktopOrWeb = true,
this.padding,
this.paddingWhenNotFullWidth,
}) : assert(
!(controller != null && primary == true),
'Primary ScrollViews obtain their ScrollController via inheritance from a PrimaryScrollController widget. '
Expand Down Expand Up @@ -151,6 +152,7 @@ class UniversalGridView extends StatelessWidget {
this.childAspectRatio = 1.0,
this.mainAxisExtent,
this.padding,
this.paddingWhenNotFullWidth,
this.onRefresh,
this.showScrollbarWhenDesktopOrWeb = true,
}) : assert(
Expand Down Expand Up @@ -221,6 +223,11 @@ class UniversalGridView extends StatelessWidget {
/// グリッドの横方向の要素数。
final int crossAxisCount;

/// [padding] when the width does not exceed [UniversalScaffold.breakpoint] and the width is fixed.If [Null], [padding] is used.
///
/// 横幅が[UniversalScaffold.breakpoint]を超えない場合、横幅が固定されているときの[padding][Null]の場合は[padding]が利用されます。
final EdgeInsetsGeometry? paddingWhenNotFullWidth;

/// {@macro flutter.widgets.scroll_view.padding}
final EdgeInsetsGeometry? padding;

Expand Down Expand Up @@ -350,7 +357,8 @@ class UniversalGridView extends StatelessWidget {
final breakpoint = ResponsiveScaffold.of(context)?.breakpoint;
final maxWidth = (breakpoint?.width(context) ?? width).limitHigh(width);
final responsivePadding = (width - maxWidth) / 2.0;
final resolvedPadding = padding?.resolve(TextDirection.ltr);
final resolvedPadding =
_effectivePadding(context, breakpoint)?.resolve(TextDirection.ltr);
final generatedPadding = EdgeInsets.fromLTRB(
(resolvedPadding?.left ?? 0.0) + responsivePadding,
resolvedPadding?.top ?? 0.0,
Expand All @@ -363,4 +371,15 @@ class UniversalGridView extends StatelessWidget {
sliver: sliver,
);
}

EdgeInsetsGeometry? _effectivePadding(
BuildContext context,
ResponsiveBreakpoint? breakpoint,
) {
if (breakpoint?.width(context) == double.infinity) {
return padding;
} else {
return paddingWhenNotFullWidth ?? padding;
}
}
}
20 changes: 19 additions & 1 deletion packages/masamune/lib/universal/universal_list_builder.dart
Original file line number Diff line number Diff line change
Expand Up @@ -116,10 +116,16 @@ class UniversalListBuilder<T> extends ListBuilder<T> {
super.restorationId,
super.clipBehavior = Clip.hardEdge,
super.padding,
this.paddingWhenNotFullWidth,
this.onRefresh,
this.showScrollbarWhenDesktopOrWeb = true,
});

/// [padding] when the width does not exceed [UniversalScaffold.breakpoint] and the width is fixed.If [Null], [padding] is used.
///
/// 横幅が[UniversalScaffold.breakpoint]を超えない場合、横幅が固定されているときの[padding][Null]の場合は[padding]が利用されます。
final EdgeInsetsGeometry? paddingWhenNotFullWidth;

/// Method called by [RefreshIndicator].
///
/// Pull-to-Refresh will execute and display an indicator until [Future] is returned.
Expand Down Expand Up @@ -242,7 +248,8 @@ class UniversalListBuilder<T> extends ListBuilder<T> {
final breakpoint = ResponsiveScaffold.of(context)?.breakpoint;
final maxWidth = (breakpoint?.width(context) ?? width).limitHigh(width);
final responsivePadding = (width - maxWidth) / 2.0;
final resolvedPadding = padding?.resolve(TextDirection.ltr);
final resolvedPadding =
_effectivePadding(context, breakpoint)?.resolve(TextDirection.ltr);
final generatedPadding = EdgeInsets.fromLTRB(
(resolvedPadding?.left ?? 0.0) + responsivePadding,
resolvedPadding?.top ?? 0.0,
Expand All @@ -255,4 +262,15 @@ class UniversalListBuilder<T> extends ListBuilder<T> {
sliver: sliver,
);
}

EdgeInsetsGeometry? _effectivePadding(
BuildContext context,
ResponsiveBreakpoint? breakpoint,
) {
if (breakpoint?.width(context) == double.infinity) {
return padding;
} else {
return paddingWhenNotFullWidth ?? padding;
}
}
}
20 changes: 19 additions & 1 deletion packages/masamune/lib/universal/universal_list_view.dart
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ class UniversalListView extends StatelessWidget {
this.keyboardDismissBehavior = ScrollViewKeyboardDismissBehavior.manual,
this.restorationId,
this.clipBehavior = Clip.hardEdge,
this.paddingWhenNotFullWidth,
this.padding,
}) : assert(
!(controller != null && primary == true),
Expand Down Expand Up @@ -105,6 +106,11 @@ class UniversalListView extends StatelessWidget {
/// [ListView]で表示するための子要素のリスト。
final List<Widget> children;

/// [padding] when the width does not exceed [UniversalScaffold.breakpoint] and the width is fixed.If [Null], [padding] is used.
///
/// 横幅が[UniversalScaffold.breakpoint]を超えない場合、横幅が固定されているときの[padding][Null]の場合は[padding]が利用されます。
final EdgeInsetsGeometry? paddingWhenNotFullWidth;

/// {@macro flutter.widgets.scroll_view.padding}
final EdgeInsetsGeometry? padding;

Expand Down Expand Up @@ -217,7 +223,8 @@ class UniversalListView extends StatelessWidget {
final breakpoint = ResponsiveScaffold.of(context)?.breakpoint;
final maxWidth = (breakpoint?.width(context) ?? width).limitHigh(width);
final responsivePadding = (width - maxWidth) / 2.0;
final resolvedPadding = padding?.resolve(TextDirection.ltr);
final resolvedPadding =
_effectivePadding(context, breakpoint)?.resolve(TextDirection.ltr);
final generatedPadding = EdgeInsets.fromLTRB(
(resolvedPadding?.left ?? 0.0) + responsivePadding,
resolvedPadding?.top ?? 0.0,
Expand All @@ -230,4 +237,15 @@ class UniversalListView extends StatelessWidget {
sliver: sliver,
);
}

EdgeInsetsGeometry? _effectivePadding(
BuildContext context,
ResponsiveBreakpoint? breakpoint,
) {
if (breakpoint?.width(context) == double.infinity) {
return padding;
} else {
return paddingWhenNotFullWidth ?? padding;
}
}
}
2 changes: 1 addition & 1 deletion packages/masamune/lib/universal/universal_scaffold.dart
Original file line number Diff line number Diff line change
Expand Up @@ -210,7 +210,7 @@ class UniversalScaffold extends StatefulWidget {
/// You can specify the breakpoint at which the UI will change to a mobile-oriented UI.
///
/// UIがモバイル向けのUIに変化するブレークポイントを指定できます。
final ResponsiveContainerType? breakpoint;
final ResponsiveBreakpoint? breakpoint;

/// {@template flutter.material.scaffold.appBar}
/// The [AppBar] to display at the top of the scaffold.
Expand Down
13 changes: 7 additions & 6 deletions packages/masamune/pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -331,10 +331,11 @@ packages:
katana_responsive:
dependency: "direct main"
description:
path: "../katana_responsive"
relative: true
source: path
version: "1.3.0"
name: katana_responsive
sha256: "794cd0adc07394f3208dd521c650acefaa4a1f9c039e0e41e7400b2ee71f68f4"
url: "https://pub.dev"
source: hosted
version: "1.3.1"
katana_router:
dependency: "direct main"
description:
Expand Down Expand Up @@ -395,10 +396,10 @@ packages:
dependency: "direct main"
description:
name: katana_ui
sha256: "97ad7ee50fed5c993891c5890caab1eff7871d54825e3fe7d96a80226040657a"
sha256: e5eaee5c6b89ba6e87f6d242d04461e17aad8d24884632b8aa28ab80380d1e04
url: "https://pub.dev"
source: hosted
version: "1.1.9"
version: "1.1.10"
lints:
dependency: transitive
description:
Expand Down

0 comments on commit 90aee16

Please sign in to comment.