Commit 964dc1fc authored by imzyy's avatar imzyy Committed by Michael Goderbauer

Add fullscreenDialog argument in PageRouteBuilder (#40161)

parent c19e553d
...@@ -56,7 +56,7 @@ class PageRouteBuilder<T> extends PageRoute<T> { ...@@ -56,7 +56,7 @@ class PageRouteBuilder<T> extends PageRoute<T> {
/// Creates a route that delegates to builder callbacks. /// Creates a route that delegates to builder callbacks.
/// ///
/// The [pageBuilder], [transitionsBuilder], [opaque], [barrierDismissible], /// The [pageBuilder], [transitionsBuilder], [opaque], [barrierDismissible],
/// and [maintainState] arguments must not be null. /// [maintainState], and [fullscreenDialog] arguments must not be null.
PageRouteBuilder({ PageRouteBuilder({
RouteSettings settings, RouteSettings settings,
@required this.pageBuilder, @required this.pageBuilder,
...@@ -67,12 +67,14 @@ class PageRouteBuilder<T> extends PageRoute<T> { ...@@ -67,12 +67,14 @@ class PageRouteBuilder<T> extends PageRoute<T> {
this.barrierColor, this.barrierColor,
this.barrierLabel, this.barrierLabel,
this.maintainState = true, this.maintainState = true,
bool fullscreenDialog = false,
}) : assert(pageBuilder != null), }) : assert(pageBuilder != null),
assert(transitionsBuilder != null), assert(transitionsBuilder != null),
assert(opaque != null),
assert(barrierDismissible != null), assert(barrierDismissible != null),
assert(maintainState != null), assert(maintainState != null),
assert(opaque != null), assert(fullscreenDialog != null),
super(settings: settings); super(settings: settings, fullscreenDialog: fullscreenDialog);
/// Used build the route's primary contents. /// Used build the route's primary contents.
/// ///
......
...@@ -568,6 +568,15 @@ void main() { ...@@ -568,6 +568,15 @@ void main() {
); );
} }
PageRoute<void> pageRouteBuilder() {
return PageRouteBuilder<void>(
pageBuilder: (BuildContext context, Animation<double> animation, Animation<double> secondaryAnimation) {
return Scaffold(appBar: AppBar(), body: const Text('Page 2'));
},
fullscreenDialog: true,
);
}
PageRoute<void> customPageRouteBuilder() { PageRoute<void> customPageRouteBuilder() {
return _CustomPageRoute<void>( return _CustomPageRoute<void>(
builder: (BuildContext context) { builder: (BuildContext context) {
...@@ -589,6 +598,18 @@ void main() { ...@@ -589,6 +598,18 @@ void main() {
await expectCloseIcon(tester, TargetPlatform.iOS, Icons.close, materialRouteBuilder); await expectCloseIcon(tester, TargetPlatform.iOS, Icons.close, materialRouteBuilder);
}); });
testWidgets('Close button shows correctly with PageRouteBuilder on Android', (WidgetTester tester) async {
await expectCloseIcon(tester, TargetPlatform.android, Icons.close, pageRouteBuilder);
});
testWidgets('Close button shows correctly with PageRouteBuilder on Fuchsia', (WidgetTester tester) async {
await expectCloseIcon(tester, TargetPlatform.fuchsia, Icons.close, pageRouteBuilder);
});
testWidgets('Close button shows correctly with PageRouteBuilder on iOS', (WidgetTester tester) async {
await expectCloseIcon(tester, TargetPlatform.iOS, Icons.close, pageRouteBuilder);
});
testWidgets('Close button shows correctly with custom page route on Android', (WidgetTester tester) async { testWidgets('Close button shows correctly with custom page route on Android', (WidgetTester tester) async {
await expectCloseIcon(tester, TargetPlatform.android, Icons.close, customPageRouteBuilder); await expectCloseIcon(tester, TargetPlatform.android, Icons.close, customPageRouteBuilder);
}); });
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment