Add fullscreenDialog argument in PageRouteBuilder (#40161)

This commit is contained in:
imzyy 2019-09-25 07:54:44 +08:00 committed by Michael Goderbauer
parent c19e553d64
commit 964dc1fc30
2 changed files with 26 additions and 3 deletions

View File

@ -56,7 +56,7 @@ class PageRouteBuilder<T> extends PageRoute<T> {
/// Creates a route that delegates to builder callbacks.
///
/// The [pageBuilder], [transitionsBuilder], [opaque], [barrierDismissible],
/// and [maintainState] arguments must not be null.
/// [maintainState], and [fullscreenDialog] arguments must not be null.
PageRouteBuilder({
RouteSettings settings,
@required this.pageBuilder,
@ -67,12 +67,14 @@ class PageRouteBuilder<T> extends PageRoute<T> {
this.barrierColor,
this.barrierLabel,
this.maintainState = true,
bool fullscreenDialog = false,
}) : assert(pageBuilder != null),
assert(transitionsBuilder != null),
assert(opaque != null),
assert(barrierDismissible != null),
assert(maintainState != null),
assert(opaque != null),
super(settings: settings);
assert(fullscreenDialog != null),
super(settings: settings, fullscreenDialog: fullscreenDialog);
/// Used build the route's primary contents.
///

View File

@ -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() {
return _CustomPageRoute<void>(
builder: (BuildContext context) {
@ -589,6 +598,18 @@ void main() {
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 {
await expectCloseIcon(tester, TargetPlatform.android, Icons.close, customPageRouteBuilder);
});