You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

点击ListTile弹出AlertDialog报错:LayoutBuilder不支持返回固有尺寸

解决Flutter弹窗报错:LayoutBuilder does not support returning intrinsic dimensions

问题原因

这个错误的核心是AlertDialog内部依赖LayoutBuilder进行布局计算,你的代码里有两个触发冲突的问题:

  • 用无约束的Container包裹了AlertDialog,干扰了它自身的布局逻辑
  • AlertDialog的title使用AutoSizeText时未设置明确尺寸约束,导致组件尝试计算内在尺寸,和LayoutBuilder的布局逻辑冲突

解决方案

  1. 移除LanguageDialog中包裹AlertDialog的多余Container
  2. 给AutoSizeText添加明确约束(比如minFontSize、maxLines),或者直接替换为普通Text组件(如果不需要自动调整字号)

修改后的代码

方案一:保留AutoSizeText并添加约束

class LanguageDialog extends StatelessWidget {
  LanguageDialog({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return AlertDialog(
      title: AutoSizeText(
        'Select language',
        minFontSize: 16, // 明确最小字号,避免触发内在尺寸计算
        maxLines: 1,
      ),
    );
  }
}

方案二:替换为普通Text组件

class LanguageDialog extends StatelessWidget {
  LanguageDialog({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return AlertDialog(
      title: Text('Select language'),
    );
  }
}

额外说明

AlertDialog本身已经是具备完整布局逻辑的弹窗组件,不需要额外用Container包裹。如果需要调整弹窗宽高,应该使用AlertDialog的contentPadding、insetPadding属性,或者通过Theme全局配置,而非用外部容器强制约束。

内容的提问来源于stack exchange,提问作者Mus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 09:15:45