-
Notifications
You must be signed in to change notification settings - Fork 29.7k
Closed
Closed
Copy link
Labels
a: tests"flutter test", flutter_test, or one of our tests"flutter test", flutter_test, or one of our testsf: material designflutter/packages/flutter/material repository.flutter/packages/flutter/material repository.found in release: 3.37Found to occur in 3.37Found to occur in 3.37frameworkflutter/packages/flutter repository. See also f: labels.flutter/packages/flutter repository. See also f: labels.has reproducible stepsThe issue has been confirmed reproducible and is ready to work onThe issue has been confirmed reproducible and is ready to work onr: fixedIssue is closed as already fixed in a newer versionIssue is closed as already fixed in a newer versionteam-designOwned by Design Languages teamOwned by Design Languages team
Description
Steps to reproduce
Found by looking at the MenuAnchor source:
@override
bool shouldRelayout(_MenuLayout oldDelegate) {
return anchorRect != oldDelegate.anchorRect ||
textDirection != oldDelegate.textDirection ||
alignment != oldDelegate.alignment ||
alignmentOffset != oldDelegate.alignmentOffset ||
menuPosition != oldDelegate.menuPosition ||
menuPadding != oldDelegate.menuPadding ||
orientation != oldDelegate.orientation ||
parentOrientation != oldDelegate.parentOrientation ||
// Need to check for reserved padding equality
// reservedPadding != oldDelegate.reservedPadding ||
!setEquals(avoidBounds, oldDelegate.avoidBounds);
}I couldn't find a good way to replicate other than via a test. So, run the attached test and it should fail. I'll submit a fix ASAP.
Expected results
Test passes
Actual results
Test fails
Code sample
Code sample
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
void main() {
testWidgets('Layout updates when reserved padding changes', (
WidgetTester tester,
) async {
MenuController controller = MenuController();
const EdgeInsetsGeometry reservedPadding = EdgeInsets.symmetric(
horizontal: 13.0,
);
await tester.pumpWidget(
MaterialApp(
home: MenuAnchor(
controller: controller,
menuChildren: const <Widget>[SizedBox(width: 800, height: 24)],
),
),
);
controller.open(position: Offset.zero);
await tester.pump();
await tester.pumpWidget(
MaterialApp(
home: MenuAnchor(
controller: controller,
reservedPadding: reservedPadding,
menuChildren: const <Widget>[SizedBox(width: 800, height: 24)],
),
),
);
expect(
tester
.getRect(
find.byWidgetPredicate(
(Widget widget) => widget.runtimeType.toString() == '_MenuPanel',
),
)
.width,
800.0 - reservedPadding.horizontal,
);
});
}Screenshots or Video
Screenshots / Video demonstration
N/a
Logs
Logs
N/aFlutter Doctor output
Doctor output
[✓] Flutter (Channel master, 3.37.0-1.0.pre-397, on macOS 15.5 24F74 darwin-arm64, locale en-US)
[1,381ms]
• Flutter version 3.37.0-1.0.pre-397 on channel master at /Users/davidhicks/fvm/versions/master
• Upstream repository https://github.com/flutter/flutter.git
• Framework revision 018897e3f1 (4 hours ago), 2025-10-03 03:22:28 -0400
• Engine revision 018897e3f1
• Dart version 3.10.0 (build 3.10.0-275.0.dev)
• DevTools version 2.50.0
• Feature flags: enable-web, enable-linux-desktop, enable-macos-desktop, enable-windows-desktop,
enable-android, enable-ios, cli-animations, enable-native-assets, omit-legacy-version-file,
enable-lldb-debugging
[!] Android toolchain - develop for Android devices (Android SDK version 35.0.0) [1,897ms]
• Android SDK at /Users/davidhicks/Library/Android/sdk
• Emulator version 35.4.9.0 (build_id 13025442) (CL:N/A)
• Platform android-36, build-tools 35.0.0
• ANDROID_HOME = /Users/davidhicks/Library/Android/sdk
• Java binary at: /Library/Java/JavaVirtualMachines/jdk-17.0.2.jdk/Contents/Home/bin/java
This JDK is specified in your Flutter configuration.
To change the current JDK, run: `flutter config --jdk-dir="path/to/jdk"`.
• Java version Java(TM) SE Runtime Environment (build 17.0.2+8-LTS-86)
! Some Android licenses not accepted. To resolve this, run: flutter doctor --android-licenses
[✓] Xcode - develop for iOS and macOS (Xcode 16.4) [1,498ms]
• Xcode at /Applications/Xcode.app/Contents/Developer
• Build 16F6
• CocoaPods version 1.16.2
[✓] Chrome - develop for the web [12ms]
• Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
[✓] Connected device (2 available) [6.4s]
• macOS (desktop) • macos • darwin-arm64 • macOS 15.5 24F74 darwin-arm64
• Chrome (web) • chrome • web-javascript • Google Chrome 140.0.7339.214
! Error: Browsing on the local area network for David’s iPhone. Ensure the device is unlocked and
attached with a cable or associated with the same local area network as this Mac.
The device must be opted into Developer Mode to connect wirelessly. (code -27)
[✓] Network resources [317ms]
• All expected network resources are available.
! Doctor found issues in 1 category.Metadata
Metadata
Assignees
Labels
a: tests"flutter test", flutter_test, or one of our tests"flutter test", flutter_test, or one of our testsf: material designflutter/packages/flutter/material repository.flutter/packages/flutter/material repository.found in release: 3.37Found to occur in 3.37Found to occur in 3.37frameworkflutter/packages/flutter repository. See also f: labels.flutter/packages/flutter repository. See also f: labels.has reproducible stepsThe issue has been confirmed reproducible and is ready to work onThe issue has been confirmed reproducible and is ready to work onr: fixedIssue is closed as already fixed in a newer versionIssue is closed as already fixed in a newer versionteam-designOwned by Design Languages teamOwned by Design Languages team