Add defaults to showGeneralDialog() (#61503)

The function passes most of its arguments through to
`_DialogRoute`, but it wasn't providing the default
values that `_DialogRoute` was, causing it to override
the defaults will null values.
This commit is contained in:
Todd Volkert 2020-07-15 11:53:55 -07:00 committed by GitHub
parent d009172fd2
commit 0d2421d5df
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 49 additions and 3 deletions

View File

@ -1799,10 +1799,10 @@ class _DialogRoute<T> extends PopupRoute<T> {
Future<T> showGeneralDialog<T>({
@required BuildContext context,
@required RoutePageBuilder pageBuilder,
bool barrierDismissible,
bool barrierDismissible = false,
String barrierLabel,
Color barrierColor,
Duration transitionDuration,
Color barrierColor = const Color(0x80000000),
Duration transitionDuration = const Duration(milliseconds: 200),
RouteTransitionsBuilder transitionBuilder,
bool useRootNavigator = true,
RouteSettings routeSettings,

View File

@ -1041,6 +1041,41 @@ void main() {
expect(nestedObserver.dialogCount, 1);
});
testWidgets('showGeneralDialog default argument values', (WidgetTester tester) async {
final DialogObserver rootObserver = DialogObserver();
await tester.pumpWidget(MaterialApp(
navigatorObservers: <NavigatorObserver>[rootObserver],
home: Navigator(
onGenerateRoute: (RouteSettings settings) {
return MaterialPageRoute<dynamic>(
builder: (BuildContext context) {
return RaisedButton(
onPressed: () {
showGeneralDialog<void>(
context: context,
pageBuilder: (BuildContext innerContext, _, __) {
return const SizedBox();
},
);
},
child: const Text('Show Dialog'),
);
},
);
},
),
));
// Open the dialog.
await tester.tap(find.byType(RaisedButton));
expect(rootObserver.dialogRoutes.length, equals(1));
final ModalRoute<dynamic> route = rootObserver.dialogRoutes.last;
expect(route.barrierDismissible, isNotNull);
expect(route.barrierColor, isNotNull);
expect(route.transitionDuration, isNotNull);
});
testWidgets('reverseTransitionDuration defaults to transitionDuration', (WidgetTester tester) async {
final GlobalKey containerKey = GlobalKey();
@ -1598,15 +1633,26 @@ class TestPageRouteBuilder extends PageRouteBuilder<void> {
}
class DialogObserver extends NavigatorObserver {
final List<ModalRoute<dynamic>> dialogRoutes = <ModalRoute<dynamic>>[];
int dialogCount = 0;
@override
void didPush(Route<dynamic> route, Route<dynamic> previousRoute) {
if (route.toString().contains('_DialogRoute')) {
dialogRoutes.add(route as ModalRoute<dynamic>);
dialogCount++;
}
super.didPush(route, previousRoute);
}
@override
void didPop(Route<dynamic> route, Route<dynamic> previousRoute) {
if (route.toString().contains('_DialogRoute')) {
dialogRoutes.removeLast();
dialogCount--;
}
super.didPop(route, previousRoute);
}
}
class _TestDialogRouteWithCustomBarrierCurve<T> extends PopupRoute<T> {