Set a max width for home (#706)
diff --git a/lib/layout/adaptive.dart b/lib/layout/adaptive.dart
index 11ac1d3..59fd9de 100644
--- a/lib/layout/adaptive.dart
+++ b/lib/layout/adaptive.dart
@@ -6,6 +6,9 @@
import 'package:dual_screen/dual_screen.dart';
import 'package:flutter/material.dart';
+/// The maximum width taken up by the home screen contents.
+const maxHomeWidth = 1400.0;
+
/// Returns a boolean value whether the window is considered medium or large size.
///
/// When running on a desktop device that is also foldable, the display is not
diff --git a/lib/pages/home.dart b/lib/pages/home.dart
index 825ebbb..6a8777b 100644
--- a/lib/pages/home.dart
+++ b/lib/pages/home.dart
@@ -165,89 +165,94 @@
];
return Scaffold(
- body: ListView(
- // Makes integration tests possible.
- key: const ValueKey('HomeListView'),
- padding: EdgeInsetsDirectional.only(
- top: isDesktop ? firstHeaderDesktopTopPadding : 21,
- ),
- children: [
- Padding(
- padding: const EdgeInsets.symmetric(
- horizontal: _horizontalDesktopPadding,
+ body: Center(
+ child: Container(
+ constraints: const BoxConstraints(maxWidth: maxHomeWidth),
+ child: ListView(
+ // Makes integration tests possible.
+ key: const ValueKey('HomeListView'),
+ padding: EdgeInsetsDirectional.only(
+ top: isDesktop ? firstHeaderDesktopTopPadding : 21,
),
- child: _GalleryHeader(),
- ),
- SizedBox(
- height: carouselHeight,
- child: _DesktopCarousel(children: carouselCards),
- ),
- Padding(
- padding: const EdgeInsets.symmetric(
- horizontal: _horizontalDesktopPadding,
- ),
- child: _CategoriesHeader(),
- ),
- Container(
- height: 585,
- padding: const EdgeInsets.symmetric(
- horizontal: _horizontalDesktopPadding,
- ),
- child: Row(
- mainAxisSize: MainAxisSize.max,
- mainAxisAlignment: MainAxisAlignment.spaceBetween,
- children: spaceBetween(28, desktopCategoryItems),
- ),
- ),
- Padding(
- padding: const EdgeInsetsDirectional.only(
- start: _horizontalDesktopPadding,
- bottom: 81,
- end: _horizontalDesktopPadding,
- top: 109,
- ),
- child: Row(
- children: [
- MouseRegion(
- cursor: SystemMouseCursors.click,
- child: GestureDetector(
- onTap: () async {
- final url = Uri.parse('https://flutter.dev');
- if (await canLaunchUrl(url)) {
- await launchUrl(url);
- }
- },
- child: FadeInImagePlaceholder(
- image: Theme.of(context).colorScheme.brightness ==
- Brightness.dark
- ? const AssetImage(
- 'assets/logo/flutter_logo.png',
- package: 'flutter_gallery_assets',
- )
- : const AssetImage(
- 'assets/logo/flutter_logo_color.png',
- package: 'flutter_gallery_assets',
- ),
- placeholder: const SizedBox.shrink(),
- excludeFromSemantics: true,
+ children: [
+ Padding(
+ padding: const EdgeInsets.symmetric(
+ horizontal: _horizontalDesktopPadding,
+ ),
+ child: _GalleryHeader(),
+ ),
+ SizedBox(
+ height: carouselHeight,
+ child: _DesktopCarousel(children: carouselCards),
+ ),
+ Padding(
+ padding: const EdgeInsets.symmetric(
+ horizontal: _horizontalDesktopPadding,
+ ),
+ child: _CategoriesHeader(),
+ ),
+ Container(
+ height: 585,
+ padding: const EdgeInsets.symmetric(
+ horizontal: _horizontalDesktopPadding,
+ ),
+ child: Row(
+ mainAxisSize: MainAxisSize.max,
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ children: spaceBetween(28, desktopCategoryItems),
+ ),
+ ),
+ Padding(
+ padding: const EdgeInsetsDirectional.only(
+ start: _horizontalDesktopPadding,
+ bottom: 81,
+ end: _horizontalDesktopPadding,
+ top: 109,
+ ),
+ child: Row(
+ children: [
+ MouseRegion(
+ cursor: SystemMouseCursors.click,
+ child: GestureDetector(
+ onTap: () async {
+ final url = Uri.parse('https://flutter.dev');
+ if (await canLaunchUrl(url)) {
+ await launchUrl(url);
+ }
+ },
+ child: FadeInImagePlaceholder(
+ image: Theme.of(context).colorScheme.brightness ==
+ Brightness.dark
+ ? const AssetImage(
+ 'assets/logo/flutter_logo.png',
+ package: 'flutter_gallery_assets',
+ )
+ : const AssetImage(
+ 'assets/logo/flutter_logo_color.png',
+ package: 'flutter_gallery_assets',
+ ),
+ placeholder: const SizedBox.shrink(),
+ excludeFromSemantics: true,
+ ),
+ ),
),
- ),
+ Expanded(
+ child: Wrap(
+ crossAxisAlignment: WrapCrossAlignment.center,
+ alignment: WrapAlignment.end,
+ children: const [
+ SettingsAbout(),
+ SettingsFeedback(),
+ SettingsAttribution(),
+ ],
+ ),
+ ),
+ ],
),
- Expanded(
- child: Wrap(
- crossAxisAlignment: WrapCrossAlignment.center,
- alignment: WrapAlignment.end,
- children: const [
- SettingsAbout(),
- SettingsFeedback(),
- SettingsAttribution(),
- ],
- ),
- ),
- ],
- ),
+ ),
+ ],
),
- ],
+ ),
),
);
} else {
diff --git a/pubspec.lock b/pubspec.lock
index 5dbf4a2..e0b6cd1 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -310,7 +310,7 @@
name: meta
url: "https://pub.dartlang.org"
source: hosted
- version: "1.8.0"
+ version: "1.7.0"
mime:
dependency: transitive
description:
@@ -387,7 +387,7 @@
name: path
url: "https://pub.dartlang.org"
source: hosted
- version: "1.8.2"
+ version: "1.8.1"
path_provider:
dependency: transitive
description: