Unverified Commit a153d6da authored by Kevin Chisholm's avatar Kevin Chisholm Committed by GitHub

Revert "Provide default constraints for M3 dialogs" (#126355)

Reverts flutter/flutter#120082

Causing breakages: b/281181985
parent ce579326
...@@ -24,8 +24,6 @@ import 'theme_data.dart'; ...@@ -24,8 +24,6 @@ import 'theme_data.dart';
const EdgeInsets _defaultInsetPadding = EdgeInsets.symmetric(horizontal: 40.0, vertical: 24.0); const EdgeInsets _defaultInsetPadding = EdgeInsets.symmetric(horizontal: 40.0, vertical: 24.0);
const BoxConstraints _dialogConstraints = BoxConstraints(minWidth: 280.0, maxWidth: 560.0, maxHeight: 560.0);
/// A Material Design dialog. /// A Material Design dialog.
/// ///
/// This dialog widget does not have any opinion about the contents of the /// This dialog widget does not have any opinion about the contents of the
...@@ -234,7 +232,7 @@ class Dialog extends StatelessWidget { ...@@ -234,7 +232,7 @@ class Dialog extends StatelessWidget {
dialogChild = Align( dialogChild = Align(
alignment: alignment ?? dialogTheme.alignment ?? defaults.alignment!, alignment: alignment ?? dialogTheme.alignment ?? defaults.alignment!,
child: ConstrainedBox( child: ConstrainedBox(
constraints: _constraintsScaleFactor(MediaQuery.of(context).textScaleFactor, theme.useMaterial3), constraints: const BoxConstraints(minWidth: 280.0),
child: Material( child: Material(
color: backgroundColor ?? dialogTheme.backgroundColor ?? Theme.of(context).dialogBackgroundColor, color: backgroundColor ?? dialogTheme.backgroundColor ?? Theme.of(context).dialogBackgroundColor,
elevation: elevation ?? dialogTheme.elevation ?? defaults.elevation!, elevation: elevation ?? dialogTheme.elevation ?? defaults.elevation!,
...@@ -1263,7 +1261,7 @@ class SimpleDialog extends StatelessWidget { ...@@ -1263,7 +1261,7 @@ class SimpleDialog extends StatelessWidget {
Widget dialogChild = IntrinsicWidth( Widget dialogChild = IntrinsicWidth(
stepWidth: 56.0, stepWidth: 56.0,
child: ConstrainedBox( child: ConstrainedBox(
constraints: _constraintsScaleFactor(MediaQuery.of(context).textScaleFactor, theme.useMaterial3), constraints: const BoxConstraints(minWidth: 280.0),
child: Column( child: Column(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.stretch, crossAxisAlignment: CrossAxisAlignment.stretch,
...@@ -1589,17 +1587,6 @@ double _paddingScaleFactor(double textScaleFactor) { ...@@ -1589,17 +1587,6 @@ double _paddingScaleFactor(double textScaleFactor) {
return lerpDouble(1.0, 1.0 / 3.0, clampedTextScaleFactor - 1.0)!; return lerpDouble(1.0, 1.0 / 3.0, clampedTextScaleFactor - 1.0)!;
} }
BoxConstraints _constraintsScaleFactor(double textScaleFactor, bool useMaterial3) {
if (!useMaterial3) {
return const BoxConstraints(minWidth: 280.0);
} else {
return textScaleFactor == 1.0
? _dialogConstraints
// Scale the max height of the dialog by the text scale factor to aid in readability.
: _dialogConstraints.copyWith(maxHeight: _dialogConstraints.maxHeight * textScaleFactor);
}
}
// Hand coded defaults based on Material Design 2. // Hand coded defaults based on Material Design 2.
class _DialogDefaultsM2 extends DialogTheme { class _DialogDefaultsM2 extends DialogTheme {
_DialogDefaultsM2(this.context) _DialogDefaultsM2(this.context)
......
...@@ -5,7 +5,6 @@ ...@@ -5,7 +5,6 @@
import 'dart:ui'; import 'dart:ui';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart'; import 'package:flutter/rendering.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
...@@ -62,16 +61,6 @@ Finder _findButtonBar() { ...@@ -62,16 +61,6 @@ Finder _findButtonBar() {
return find.ancestor(of: find.byType(OverflowBar), matching: find.byType(Padding)).first; return find.ancestor(of: find.byType(OverflowBar), matching: find.byType(Padding)).first;
} }
// In the case of [AlertDialog], it takes up the entire screen, since it also
// contains the scrim. The first [Material] child of [AlertDialog] is the actual
// dialog itself.
Size _getDialogSize(WidgetTester tester) => tester.getSize(
find.descendant(
of: find.byType(AlertDialog),
matching: find.byType(Material),
).first,
);
const ShapeBorder _defaultM2DialogShape = RoundedRectangleBorder(borderRadius: BorderRadius.all(Radius.circular(4.0))); const ShapeBorder _defaultM2DialogShape = RoundedRectangleBorder(borderRadius: BorderRadius.all(Radius.circular(4.0)));
final ShapeBorder _defaultM3DialogShape = RoundedRectangleBorder(borderRadius: BorderRadius.circular(28.0)); final ShapeBorder _defaultM3DialogShape = RoundedRectangleBorder(borderRadius: BorderRadius.circular(28.0));
...@@ -155,8 +144,6 @@ void main() { ...@@ -155,8 +144,6 @@ void main() {
expect(material3Widget.color, material3Theme.colorScheme.surface); expect(material3Widget.color, material3Theme.colorScheme.surface);
expect(material3Widget.shape, _defaultM3DialogShape); expect(material3Widget.shape, _defaultM3DialogShape);
expect(material3Widget.elevation, 6.0); expect(material3Widget.elevation, 6.0);
// For some unknown reason, one pixel wider on web (HTML).
expect(_getDialogSize(tester), Size(280.0, isBrowser && !isCanvasKit ? 141.0 : 140.0));
}); });
testWidgets('Dialog.fullscreen Defaults', (WidgetTester tester) async { testWidgets('Dialog.fullscreen Defaults', (WidgetTester tester) async {
...@@ -350,26 +337,6 @@ void main() { ...@@ -350,26 +337,6 @@ void main() {
expect(bottomLeft.dy, 576.0); expect(bottomLeft.dy, 576.0);
}); });
testWidgets('Dialog respects constraints with large content on large screens', (WidgetTester tester) async {
const AlertDialog dialog = AlertDialog(
actions: <Widget>[ ],
content: SizedBox(
width: 1000.0,
height: 1000.0,
),
);
tester.view.physicalSize = const Size(2000, 2000);
addTearDown(tester.view.resetPhysicalSize);
await tester.pumpWidget(_buildAppWithDialog(dialog, theme: material3Theme));
await tester.tap(find.text('X'));
await tester.pumpAndSettle();
expect(_getDialogSize(tester), const Size(560.0, 560.0));
});
testWidgets('Simple dialog control test', (WidgetTester tester) async { testWidgets('Simple dialog control test', (WidgetTester tester) async {
await tester.pumpWidget( await tester.pumpWidget(
const MaterialApp( const MaterialApp(
...@@ -626,8 +593,15 @@ void main() { ...@@ -626,8 +593,15 @@ void main() {
await tester.tap(find.text('X')); await tester.tap(find.text('X'));
await tester.pumpAndSettle(); await tester.pumpAndSettle();
// The [AlertDialog] is the entire screen, since it also contains the scrim.
final Size dialogSize = _getDialogSize(tester); // The first [Material] child of [AlertDialog] is the actual dialog
// itself.
final Size dialogSize = tester.getSize(
find.descendant(
of: find.byType(AlertDialog),
matching: find.byType(Material),
).first,
);
final Size actionsSize = tester.getSize(_findButtonBar()); final Size actionsSize = tester.getSize(_findButtonBar());
expect(actionsSize.width, dialogSize.width); expect(actionsSize.width, dialogSize.width);
...@@ -655,7 +629,15 @@ void main() { ...@@ -655,7 +629,15 @@ void main() {
await tester.tap(find.text('X')); await tester.tap(find.text('X'));
await tester.pumpAndSettle(); await tester.pumpAndSettle();
final Size dialogSize = _getDialogSize(tester); // The [AlertDialog] is the entire screen, since it also contains the scrim.
// The first [Material] child of [AlertDialog] is the actual dialog
// itself.
final Size dialogSize = tester.getSize(
find.descendant(
of: find.byType(AlertDialog),
matching: find.byType(Material),
).first,
);
final Size actionsSize = tester.getSize(find.byType(OverflowBar)); final Size actionsSize = tester.getSize(find.byType(OverflowBar));
expect(actionsSize.width, dialogSize.width - (30.0 * 2)); expect(actionsSize.width, dialogSize.width - (30.0 * 2));
......
...@@ -5,7 +5,6 @@ ...@@ -5,7 +5,6 @@
@TestOn('!chrome') @TestOn('!chrome')
library; library;
import 'dart:math';
import 'dart:ui'; import 'dart:ui';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
...@@ -427,7 +426,7 @@ void main() { ...@@ -427,7 +426,7 @@ void main() {
tester.view.devicePixelRatio = 1; tester.view.devicePixelRatio = 1;
await mediaQueryBoilerplate(tester, materialType: materialType); await mediaQueryBoilerplate(tester, materialType: materialType);
width = min(timePickerPortraitSize.width + padding.horizontal, 560); // width is limited to 560 width = timePickerPortraitSize.width + padding.horizontal;
height = timePickerPortraitSize.height + padding.vertical; height = timePickerPortraitSize.height + padding.vertical;
expect( expect(
tester.getSize(find.byWidget(getMaterialFromDialog(tester))), tester.getSize(find.byWidget(getMaterialFromDialog(tester))),
...@@ -446,7 +445,7 @@ void main() { ...@@ -446,7 +445,7 @@ void main() {
materialType: materialType, materialType: materialType,
); );
width = min(timePickerLandscapeSize.width + padding.horizontal, 560); // width is limited to 560 width = timePickerLandscapeSize.width + padding.horizontal;
height = timePickerLandscapeSize.height + padding.vertical; height = timePickerLandscapeSize.height + padding.vertical;
expect( expect(
tester.getSize(find.byWidget(getMaterialFromDialog(tester))), tester.getSize(find.byWidget(getMaterialFromDialog(tester))),
...@@ -750,10 +749,10 @@ void main() { ...@@ -750,10 +749,10 @@ void main() {
expect(tester.getBottomLeft(find.text(okString)).dx, 616); expect(tester.getBottomLeft(find.text(okString)).dx, 616);
expect(tester.getBottomRight(find.text(cancelString)).dx, 582); expect(tester.getBottomRight(find.text(cancelString)).dx, 582);
case MaterialType.material3: case MaterialType.material3:
expect(tester.getTopLeft(find.text(selectTimeString)), equals(const Offset(144, 129))); expect(tester.getTopLeft(find.text(selectTimeString)), equals(const Offset(138, 129)));
expect(tester.getBottomRight(find.text(selectTimeString)), equals(const Offset(298.0, 143.0))); expect(tester.getBottomRight(find.text(selectTimeString)), equals(const Offset(292.0, 143.0)));
expect(tester.getBottomLeft(find.text(okString)).dx, 610); expect(tester.getBottomLeft(find.text(okString)).dx, 616);
expect(tester.getBottomRight(find.text(cancelString)).dx, 572); expect(tester.getBottomRight(find.text(cancelString)).dx, 578);
} }
await tester.tap(find.text(okString)); await tester.tap(find.text(okString));
...@@ -771,11 +770,11 @@ void main() { ...@@ -771,11 +770,11 @@ void main() {
expect(tester.getBottomRight(find.text(okString)).dx, 184); expect(tester.getBottomRight(find.text(okString)).dx, 184);
expect(tester.getBottomLeft(find.text(cancelString)).dx, 218); expect(tester.getBottomLeft(find.text(cancelString)).dx, 218);
case MaterialType.material3: case MaterialType.material3:
expect(tester.getTopLeft(find.text(selectTimeString)), equals(const Offset(502, 129))); expect(tester.getTopLeft(find.text(selectTimeString)), equals(const Offset(508, 129)));
expect(tester.getBottomRight(find.text(selectTimeString)), equals(const Offset(656, 143))); expect(tester.getBottomRight(find.text(selectTimeString)), equals(const Offset(662, 143)));
expect(tester.getBottomLeft(find.text(okString)).dx, 162); expect(tester.getBottomLeft(find.text(okString)).dx, 156);
expect(tester.getBottomRight(find.text(okString)).dx, 190); expect(tester.getBottomRight(find.text(okString)).dx, 184);
expect(tester.getBottomLeft(find.text(cancelString)).dx, 228); expect(tester.getBottomLeft(find.text(cancelString)).dx, 222);
} }
await tester.tap(find.text(okString)); await tester.tap(find.text(okString));
......
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