flutter runtime_error ai_generated true

RenderFlex 子项具有非零弹性,但传入的高度约束是无界的

RenderFlex children have non-zero flex but incoming height constraints are unbounded

ID: flutter/renderflex-vertical-viewport

其他格式: JSON · Markdown 中文 · English
95%修复率
90%置信度
1证据数
2023-06-20首次发现

版本兼容性

版本状态引入弃用备注
Flutter 3.10.0 active
Dart 3.0.0 active

根因分析

带有 Expanded 子项的 Column 或 Flex 小部件被放置在未提供有界高度约束的可滚动视图(例如 ListView、SingleChildScrollView)内。

English

A Column or Flex widget with Expanded children is placed inside a scrollable view (e.g., ListView, SingleChildScrollView) that does not provide a bounded height constraint.

generic

官方文档

https://api.flutter.dev/flutter/rendering/RenderFlex-class.html

解决方案

  1. Wrap the Column inside an IntrinsicHeight widget to provide a bounded constraint. Example: IntrinsicHeight(child: Column(children: [Expanded(child: ...), ...]));
  2. Use a ShrinkWrappingViewport or set the ListView's shrinkWrap: true and neverScrollableScrollPhysics: true to allow the Column to calculate its own height.
  3. Replace the scrollable parent with a NonScrollableColumn or use a CustomScrollView with slivers that provide bounded constraints.

无效尝试

常见但无效的做法:

  1. Wrap the Column in a SizedBox with a fixed height 50% 失败

    A fixed height may not adapt to different screen sizes and can cause overflow on smaller devices.

  2. Replace Expanded with Flexible without flex value 70% 失败

    Flexible still requires a bounded constraint; the error persists if the parent is unbounded.