Unverified Commit 26f976f5 authored by Hans Muller's avatar Hans Muller Committed by GitHub

Use OverflowBar instead of ButtonBar in DateRangePicker (#62695)

parent ddeb5bb9
......@@ -12,7 +12,6 @@ import 'package:flutter/widgets.dart';
import '../app_bar.dart';
import '../back_button.dart';
import '../button_bar.dart';
import '../button_theme.dart';
import '../color_scheme.dart';
import '../debug.dart';
......@@ -655,19 +654,23 @@ class _InputDateRangePickerDialog extends StatelessWidget {
onIconPressed: onToggleEntryMode,
);
final Widget actions = ButtonBar(
buttonTextTheme: ButtonTextTheme.primary,
layoutBehavior: ButtonBarLayoutBehavior.constrained,
children: <Widget>[
TextButton(
child: Text(cancelText ?? localizations.cancelButtonLabel),
onPressed: onCancel,
),
TextButton(
child: Text(confirmText ?? localizations.okButtonLabel),
onPressed: onConfirm,
),
],
final Widget actions = Container(
alignment: AlignmentDirectional.centerEnd,
constraints: const BoxConstraints(minHeight: 52.0),
padding: const EdgeInsets.symmetric(horizontal: 8),
child: OverflowBar(
spacing: 8,
children: <Widget>[
TextButton(
child: Text(cancelText ?? localizations.cancelButtonLabel),
onPressed: onCancel,
),
TextButton(
child: Text(confirmText ?? localizations.okButtonLabel),
onPressed: onConfirm,
),
],
),
);
switch (orientation) {
......
......@@ -207,6 +207,62 @@ void main() {
});
});
testWidgets('OK Cancel button layout', (WidgetTester tester) async {
Widget buildFrame(TextDirection textDirection) {
return MaterialApp(
home: Material(
child: Center(
child: Builder(
builder: (BuildContext context) {
return ElevatedButton(
child: const Text('X'),
onPressed: () {
showDateRangePicker(
context: context,
firstDate:DateTime(2001, DateTime.january, 1),
lastDate: DateTime(2031, DateTime.december, 31),
builder: (BuildContext context, Widget child) {
return Directionality(
textDirection: textDirection,
child: child,
);
},
);
},
);
},
),
),
),
);
}
Future<void> showOkCancelDialog(TextDirection textDirection) async {
await tester.pumpWidget(buildFrame(textDirection));
await tester.tap(find.text('X'));
await tester.pumpAndSettle();
await tester.tap(find.byIcon(Icons.edit));
await tester.pumpAndSettle();
}
Future<void> dismissOkCancelDialog() async {
await tester.tap(find.text('CANCEL'));
await tester.pumpAndSettle();
}
await showOkCancelDialog(TextDirection.ltr);
expect(tester.getBottomRight(find.text('OK')).dx, 622);
expect(tester.getBottomLeft(find.text('OK')).dx, 594);
expect(tester.getBottomRight(find.text('CANCEL')).dx, 560);
await dismissOkCancelDialog();
await showOkCancelDialog(TextDirection.rtl);
expect(tester.getBottomRight(find.text('OK')).dx, 206);
expect(tester.getBottomLeft(find.text('OK')).dx, 178);
expect(tester.getBottomRight(find.text('CANCEL')).dx, 324);
await dismissOkCancelDialog();
});
group('Haptic feedback', () {
const Duration hapticFeedbackInterval = Duration(milliseconds: 10);
FeedbackTester feedback;
......
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