-
Notifications
You must be signed in to change notification settings - Fork 29.7k
Closed
Labels
P2Important issues not at the top of the work listImportant issues not at the top of the work lista: error messageError messages from the Flutter frameworkError messages from the Flutter frameworkf: cupertinoflutter/packages/flutter/cupertino repositoryflutter/packages/flutter/cupertino repositoryf: material designflutter/packages/flutter/material repository.flutter/packages/flutter/material repository.f: routesNavigator, Router, and related APIs.Navigator, Router, and related APIs.found in release: 3.29Found to occur in 3.29Found to occur in 3.29found in release: 3.30Found to occur in 3.30Found to occur in 3.30frameworkflutter/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 onteam-designOwned by Design Languages teamOwned by Design Languages teamtriaged-designTriaged by Design Languages teamTriaged by Design Languages team
Description
Steps to reproduce
The CupertinoSheetRoute when used in combination with PopupMenuButton, results in an error.
- Copy and paste the example code below, which is a minimally modified version of the official example from the Flutter documentation.
- Tap on a
CupertinoListTileto open a newCupertinoSheetRoute. - Close the
CupertinoSheetRouteby tapping on “Go Back”. - Tap on the
PopupMenuButton—this will trigger the error.
I tested this issue using the “Pixel 8 Pro” android emulator and also reproduced it on other platforms like Windows and Web (Chrome), consistently encountering the same result.
Expected results
Using CupertinoSheetRoute in combination with PopupMenuButton should not result in an error.
Actual results
After opening a CupertinoSheetRoute, an error always occurs when tapping on the PopupMenuButton.
Code sample
Code sample
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
/// Flutter code sample for [CupertinoSheetRoute].
void main() {
runApp(const CupertinoSheetApp());
}
class CupertinoSheetApp extends StatelessWidget {
const CupertinoSheetApp({super.key});
@override
Widget build(BuildContext context) {
return const CupertinoApp(
title: 'Cupertino Sheet',
home: HomePage(),
theme: CupertinoThemeData(
brightness: Brightness.light,
),
localizationsDelegates: [
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
],
);
}
}
class HomePage extends StatelessWidget {
const HomePage({super.key});
@override
Widget build(BuildContext context) {
return CupertinoPageScaffold(
navigationBar: const CupertinoNavigationBar(
middle: Text('Sheet Example'),
automaticBackgroundVisibility: false,
),
child: ListView.builder(
itemCount: 50,
itemBuilder: (context, index) {
return CupertinoListTile(
onTap: () {
Navigator.of(context).push(
CupertinoSheetRoute<void>(
builder: (BuildContext context) => const _SheetScaffold(),
),
);
},
title: Text('Test $index'),
trailing: Material(
type: MaterialType.transparency,
child: PopupMenuButton(
itemBuilder: (context) {
return [
const PopupMenuItem(child: Text('Item 1')),
const PopupMenuItem(child: Text('Item 2')),
];
},
),
),
);
},
),
);
}
}
class _SheetScaffold extends StatelessWidget {
const _SheetScaffold();
@override
Widget build(BuildContext context) {
return CupertinoPageScaffold(
child: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
const Text('CupertinoSheetRoute'),
CupertinoButton.filled(
onPressed: () {
Navigator.of(context).maybePop();
},
child: const Text('Go Back'),
),
const Text('You can also close this sheet by dragging downwards'),
CupertinoButton.filled(
onPressed: () {
Navigator.of(context).push(
CupertinoSheetRoute<void>(
builder: (BuildContext context) => const _SheetScaffold(),
),
);
},
child: const Text('Push Another Sheet'),
),
],
),
),
);
}
}Screenshots or Video
Screenshots / Video demonstration
Unbenannt.mp4
Logs
Logs
════════ Exception caught by widgets library ═══════════════════════════════════
The following assertion was thrown building LayoutBuilder:
RenderBox was not laid out: RenderFractionalTranslation#a8a99 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
'package:flutter/src/rendering/box.dart':
Failed assertion: line 2251 pos 12: 'hasSize'
Either the assertion indicates an error in the framework itself, or we should provide substantially more information in this error message to help you determine and fix the underlying cause.
In either case, please report this assertion by filing a bug on GitHub:
https://github.com/flutter/flutter/issues/new?template=2_bug.yml
The relevant error-causing widget was:
CupertinoApp CupertinoApp:file:///C:/Users/.../main.dart:16:18
When the exception was thrown, this was the stack:
#2 RenderBox.size (package:flutter/src/rendering/box.dart:2251:12)
box.dart:2251
#3 RenderFractionalTranslation.applyPaintTransform (package:flutter/src/rendering/proxy_box.dart:2974:42)
proxy_box.dart:2974
#4 RenderObject.getTransformTo (package:flutter/src/rendering/object.dart:3520:25)
object.dart:3520
#5 RenderBox.localToGlobal (package:flutter/src/rendering/box.dart:3082:39)
box.dart:3082
#6 PopupMenuButtonState._positionBuilder (package:flutter/src/material/popup_menu.dart:1542:16)
popup_menu.dart:1542
#7 _PopupMenuRoute.buildPage.<anonymous closure> (package:flutter/src/material/popup_menu.dart:972:32)
popup_menu.dart:972
#8 _LayoutBuilderElement._rebuildWithConstraints.updateChildCallback (package:flutter/src/widgets/layout_builder.dart:201:77)
layout_builder.dart:201
#9 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:3056:19)
framework.dart:3056
#10 _LayoutBuilderElement._rebuildWithConstraints (package:flutter/src/widgets/layout_builder.dart:240:12)
layout_builder.dart:240
#11 RenderObject.invokeLayoutCallback.<anonymous closure> (package:flutter/src/rendering/object.dart:2827:17)
object.dart:2827
#12 PipelineOwner._enableMutationsToDirtySubtrees (package:flutter/src/rendering/object.dart:1161:15)
object.dart:1161
#13 RenderObject.invokeLayoutCallback (package:flutter/src/rendering/object.dart:2826:14)
object.dart:2826
#14 RenderConstrainedLayoutBuilder.rebuildIfNecessary (package:flutter/src/widgets/layout_builder.dart:293:5)
layout_builder.dart:293
#15 _RenderLayoutBuilder.performLayout (package:flutter/src/widgets/layout_builder.dart:390:5)
layout_builder.dart:390
#16 RenderObject.layout (package:flutter/src/rendering/object.dart:2715:7)
object.dart:2715
#17 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:115:18)
proxy_box.dart:115
#18 RenderObject.layout (package:flutter/src/rendering/object.dart:2715:7)
object.dart:2715
#19 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:115:18)
proxy_box.dart:115
#20 RenderObject.layout (package:flutter/src/rendering/object.dart:2715:7)
object.dart:2715
#21 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:115:18)
proxy_box.dart:115
#22 RenderObject.layout (package:flutter/src/rendering/object.dart:2715:7)
object.dart:2715
#23 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:115:18)
proxy_box.dart:115
#24 RenderObject.layout (package:flutter/src/rendering/object.dart:2715:7)
object.dart:2715
#25 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:115:18)
proxy_box.dart:115
#26 RenderOffstage.performLayout (package:flutter/src/rendering/proxy_box.dart:3750:13)
proxy_box.dart:3750
#27 RenderObject.layout (package:flutter/src/rendering/object.dart:2715:7)
object.dart:2715
#28 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:115:18)
proxy_box.dart:115
#29 RenderObject.layout (package:flutter/src/rendering/object.dart:2715:7)
object.dart:2715
#30 _RenderTheaterMixin.layoutChild (package:flutter/src/widgets/overlay.dart:1076:13)
overlay.dart:1076
#31 _RenderTheater.performLayout (package:flutter/src/widgets/overlay.dart:1422:9)
overlay.dart:1422
#32 RenderObject._layoutWithoutResize (package:flutter/src/rendering/object.dart:2548:7)
object.dart:2548
#33 PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:1112:18)
object.dart:1112
#34 PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:1125:15)
object.dart:1125
#35 RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:616:23)
binding.dart:616
#36 WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:1231:13)
binding.dart:1231
#37 RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:482:5)
binding.dart:482
#38 SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1442:15)
binding.dart:1442
#39 SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1355:9)
binding.dart:1355
#40 SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:1208:5)
binding.dart:1208
#41 _invoke (dart:ui/hooks.dart:316:13)
hooks.dart:316
#42 PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:428:5)
platform_dispatcher.dart:428
#43 _drawFrame (dart:ui/hooks.dart:288:31)
hooks.dart:288
(elided 2 frames from class _AssertionError)Flutter Doctor output
Doctor output
[√] Flutter (Channel stable, 3.29.0, on Microsoft Windows [Version 10.0.26100.3194], locale de-CH) [813ms]
• Flutter version 3.29.0 on channel stable at C:\flutter
• Upstream repository https://github.com/flutter/flutter.git
• Framework revision 35c388afb5 (13 days ago), 2025-02-10 12:48:41 -0800
• Engine revision f73bfc4522
• Dart version 3.7.0
• DevTools version 2.42.2
[√] Windows Version (11 Home 64-bit, 24H2, 2009) [5.1s]
[√] Android toolchain - develop for Android devices (Android SDK version 34.0.0) [3.8s]
• Android SDK at C:\Users\AlexF\AppData\Local\Android\Sdk
• Platform android-35, build-tools 34.0.0
• ANDROID_HOME = C:\Users\AlexF\AppData\Local\Android\Sdk
• ANDROID_SDK_ROOT = C:\Users\AlexF\AppData\Local\Android\Sdk
• Java binary at: C:\Program Files\Android\Android Studio\jbr\bin\java
This is the JDK bundled with the latest Android Studio installation on this machine.
To manually set the JDK path, use: `flutter config --jdk-dir="path/to/jdk"`.
• Java version OpenJDK Runtime Environment (build 17.0.10+0--11572160)
• All Android licenses accepted.
[√] Chrome - develop for the web [191ms]
• Chrome at C:\Program Files (x86)\Google\Chrome\Application\chrome.exe
[√] Visual Studio - develop Windows apps (Visual Studio Community 2022 17.5.0) [188ms]
• Visual Studio at C:\Program Files\Microsoft Visual Studio\2022\Community
• Visual Studio Community 2022 version 17.5.33414.496
• Windows 10 SDK version 10.0.22000.0
[√] Android Studio (version 2023.3) [49ms]
• Android Studio at C:\Program Files\Android\Android Studio
• Flutter plugin can be installed from:
https://plugins.jetbrains.com/plugin/9212-flutter
• Dart plugin can be installed from:
https://plugins.jetbrains.com/plugin/6351-dart
• Java version OpenJDK Runtime Environment (build 17.0.10+0--11572160)
[√] VS Code (version 1.97.2) [47ms]
• VS Code at C:\Users\AlexF\AppData\Local\Programs\Microsoft VS Code
• Flutter extension version 3.104.0
[√] Connected device (4 available) [887ms]
• sdk gphone64 x86 64 (mobile) • emulator-5554 • android-x64 • Android 15 (API 35) (emulator)
• Windows (desktop) • windows • windows-x64 • Microsoft Windows [Version 10.0.26100.3194]
• Chrome (web) • chrome • web-javascript • Google Chrome 133.0.6943.127
• Edge (web) • edge • web-javascript • Microsoft Edge 132.0.2957.127
! Device RF8M20MPRYB is offline.
[√] Network resources [991ms]
• All expected network resources are available.
• No issues found!rlueders, marcellocamara and kevinhuijsman13
Metadata
Metadata
Assignees
Labels
P2Important issues not at the top of the work listImportant issues not at the top of the work lista: error messageError messages from the Flutter frameworkError messages from the Flutter frameworkf: cupertinoflutter/packages/flutter/cupertino repositoryflutter/packages/flutter/cupertino repositoryf: material designflutter/packages/flutter/material repository.flutter/packages/flutter/material repository.f: routesNavigator, Router, and related APIs.Navigator, Router, and related APIs.found in release: 3.29Found to occur in 3.29Found to occur in 3.29found in release: 3.30Found to occur in 3.30Found to occur in 3.30frameworkflutter/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 onteam-designOwned by Design Languages teamOwned by Design Languages teamtriaged-designTriaged by Design Languages teamTriaged by Design Languages team