diff --git a/packages/flutter/lib/src/material/app_bar.dart b/packages/flutter/lib/src/material/app_bar.dart index ed929be7c4..165b4e3112 100644 --- a/packages/flutter/lib/src/material/app_bar.dart +++ b/packages/flutter/lib/src/material/app_bar.dart @@ -998,11 +998,16 @@ class _AppBarState extends State { } } if (leading != null) { - leading = Container( - alignment: Alignment.center, - constraints: BoxConstraints.tightFor(width: widget.leadingWidth ?? _kLeadingWidth), - child: leading, - ); + leading = theme.useMaterial3 + ? Container( + alignment: Alignment.center, + constraints: BoxConstraints.tightFor(width: widget.leadingWidth ?? _kLeadingWidth), + child: leading, + ) + : ConstrainedBox( + constraints: BoxConstraints.tightFor(width: widget.leadingWidth ?? _kLeadingWidth), + child: leading, + ); } Widget? title = widget.title; diff --git a/packages/flutter/test/material/app_bar_test.dart b/packages/flutter/test/material/app_bar_test.dart index aec7e26b0c..5074100984 100644 --- a/packages/flutter/test/material/app_bar_test.dart +++ b/packages/flutter/test/material/app_bar_test.dart @@ -694,9 +694,11 @@ void main() { }); testWidgets('leading button extends to edge and is square', (WidgetTester tester) async { + final ThemeData themeData = ThemeData(platform: TargetPlatform.android); + final bool material3 = themeData.useMaterial3; await tester.pumpWidget( MaterialApp( - theme: ThemeData(platform: TargetPlatform.android), + theme: themeData, home: Scaffold( appBar: AppBar( title: const Text('X'), @@ -706,9 +708,9 @@ void main() { ), ); - final Finder hamburger = find.byTooltip('Open navigation menu'); - expect(tester.getTopLeft(hamburger), const Offset(4.0, 4.0)); - expect(tester.getSize(hamburger), const Size(48.0, 48.0)); + final Finder hamburger = find.byType(IconButton); + expect(tester.getTopLeft(hamburger), material3 ? const Offset(4.0, 4.0) : Offset.zero); + expect(tester.getSize(hamburger), material3 ? const Size(48.0, 48.0) : const Size(56.0, 56.0)); }); testWidgets('test action is 4dp from edge and 48dp min', (WidgetTester tester) async {