-
Notifications
You must be signed in to change notification settings - Fork 29.7k
Description
Steps to Reproduce
import 'package:flutter/material.dart';
void main() {
runApp(new MaterialApp(home: new DemoApp()));
}
class DemoApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(title: new Text('DropdownButton Example')),
body: new ListView(
children: [
new DropdownButton<String>(
items: <String>['Foo', 'Bar'].map((String value) {
return new DropdownMenuItem<String>(
value: value,
child: new Text(value),
);
}).toList(),
onChanged: (_) {},
),
],
),
);
}
}Tap the DropdownButton. An error is logged and the dropdown is positioned in the wrong place, at the top of the screen.
The problem is on this line in dropdown.dart, we should avoid clamping with max < min because clamp will complain.
Credit to Mahi for reporting this issue on StackOverflow.
Logs
══╡ EXCEPTION CAUGHT BY RENDERING LIBRARY ╞═════════════════════════════════════════════════════════
The following ArgumentError was thrown during performLayout():
Invalid argument(s): 0.0
When the exception was thrown, this was the stack:
#0 double.clamp (dart:core-patch/double.dart:145)
#1 _DropdownMenuRouteLayout.getPositionForChild (package:flutter/src/material/dropdown.dart:231:39)
#2 RenderCustomSingleChildLayoutBox.performLayout (package:flutter/src/rendering/shifted_box.dart:936:41)
#3 RenderObject.layout (package:flutter/src/rendering/object.dart:1916:7)
#4 RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:106:13)
#5 RenderObject.layout (package:flutter/src/rendering/object.dart:1916:7)
#6 RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:106:13)
#7 RenderObject.layout (package:flutter/src/rendering/object.dart:1916:7)
#8 RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:106:13)
#9 RenderOffstage.performLayout (package:flutter/src/rendering/proxy_box.dart:2724:26)
#10 RenderObject.layout (package:flutter/src/rendering/object.dart:1916:7)
#11 RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:106:13)
#12 RenderObject.layout (package:flutter/src/rendering/object.dart:1916:7)
#13 RenderStack.performLayout (package:flutter/src/rendering/stack.dart:433:15)
#14 RenderObject._layoutWithoutResize (package:flutter/src/rendering/object.dart:1791:7)
#15 PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:1080:18)
#16 BindingBase&SchedulerBinding&GestureBinding&ServicesBinding&RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:256:19)
#17 BindingBase&SchedulerBinding&GestureBinding&ServicesBinding&RendererBinding&WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:531:22)
#18 BindingBase&SchedulerBinding&GestureBinding&ServicesBinding&RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:194:5)
#19 BindingBase&SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:713:15)
#20 BindingBase&SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:649:9)
#21 _invoke (file:///b/build/slave/Mac_Engine/build/src/flutter/lib/ui/hooks.dart:86)
#22 _drawFrame (file:///b/build/slave/Mac_Engine/build/src/flutter/lib/ui/hooks.dart:75)
The following RenderObject was being processed when the exception was fired:
RenderCustomSingleChildLayoutBox#3cba8 NEEDS-LAYOUT NEEDS-PAINT
creator: CustomSingleChildLayout ← _ModalScopeStatus ← PageStorage-[GlobalKey#6eb4e] ←
RepaintBoundary ← IgnorePointer ← Offstage ← _FocusScopeMarker ← Semantics ← FocusScope ←
_ModalScope-[LabeledGlobalKey<_ModalScopeState>#10f13] ←
_OverlayEntry-[LabeledGlobalKey<_OverlayEntryState>#40d34] ← Stack ← ⋯
parentData: <none> (can use size)
constraints: BoxConstraints(w=320.0, h=568.0)
size: Size(320.0, 568.0)
This RenderObject had the following descendants (showing up to depth 5):
RenderOpacity#f9dbb relayoutBoundary=up1 NEEDS-PAINT
RenderCustomPaint#5644c relayoutBoundary=up2 NEEDS-PAINT
RenderClipRect#59b4a relayoutBoundary=up3 NEEDS-PAINT
_RenderInkFeatures#0f858 relayoutBoundary=up4 NEEDS-PAINT
RenderRepaintBoundary#a8fc7 relayoutBoundary=up5 NEEDS-PAINT
════════════════════════════════════════════════════════════════════════════════════════════════════
Flutter Doctor
[✓] Flutter (on Mac OS X 10.12.6 16G29, locale en-US, channel unknown)
• Flutter at /Users/jackson/git/flutter
• Framework revision c925b4c (11 days ago), 2017-09-01 06:14:35 -0700
• Engine revision 29e0c1c
• Tools Dart version 1.25.0-dev.11.0
[✓] Android toolchain - develop for Android devices (Android SDK 26.0.1)
• Android SDK at /Users/jackson/Library/Android/sdk/
• Platform android-26, build-tools 26.0.1
• ANDROID_HOME = /Users/jackson/Library/Android/sdk/
• Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
• Java version OpenJDK Runtime Environment (build 1.8.0_112-release-b06)
[✓] iOS toolchain - develop for iOS devices (Xcode 8.3.3)
• Xcode at /Applications/Xcode.app/Contents/Developer
• Xcode 8.3.3, Build version 8E3004b
• ios-deploy 1.9.1
• CocoaPods version 1.3.1
[✓] Android Studio (version 2.3)
• Android Studio at /Applications/Android Studio.app/Contents
• Java version OpenJDK Runtime Environment (build 1.8.0_112-release-b06)
[✓] IntelliJ IDEA Community Edition (version 2017.2.2)
• Flutter plugin version 16.0
• Dart plugin version 172.3757.55
[✓] Connected devices
• iPhone SE • 7072C907-DBAD-44FE-8F40-0257442C51D9 • ios • iOS 10.3 (simulator)
