diff --git a/lib/main.dart b/lib/main.dart index a278ad8c65..89cdfee951 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +import 'package:dual_screen/dual_screen.dart'; import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_crashlytics/firebase_crashlytics.dart'; import 'package:flutter/foundation.dart'; @@ -69,6 +70,7 @@ class GalleryApp extends StatelessWidget { child: Builder( builder: (context) { final options = GalleryOptions.of(context); + final hasHinge = MediaQuery.of(context).hinge?.bounds != null; return MaterialApp( restorationScopeId: 'rootGallery', title: 'Flutter Gallery', @@ -91,7 +93,8 @@ class GalleryApp extends StatelessWidget { deviceLocale = locales?.first; return basicLocaleListResolution(locales, supportedLocales); }, - onGenerateRoute: RouteConfiguration.onGenerateRoute, + onGenerateRoute: (settings) => + RouteConfiguration.onGenerateRoute(settings, hasHinge), ); }, ), diff --git a/lib/routes.dart b/lib/routes.dart index eeb562c7c8..c46a2e0ace 100644 --- a/lib/routes.dart +++ b/lib/routes.dart @@ -118,7 +118,10 @@ class RouteConfiguration { /// route. Set it on the [MaterialApp.onGenerateRoute] or /// [WidgetsApp.onGenerateRoute] to make use of the [paths] for route /// matching. - static Route? onGenerateRoute(RouteSettings settings) { + static Route? onGenerateRoute( + RouteSettings settings, + bool hasHinge, + ) { for (final path in paths) { final regExpPattern = RegExp(path.pattern); if (regExpPattern.hasMatch(settings.name!)) { @@ -130,7 +133,7 @@ class RouteConfiguration { settings: settings, ); } - if (path.openInSecondScreen) { + if (path.openInSecondScreen && hasHinge) { return TwoPanePageRoute( builder: (context) => path.builder(context, match), settings: settings,