flutter常见报错 hasSize 为什么出现 解决办法

在这里插入图片描述
出现这个hasSize的报错的原因:

  • 当父Widget需要子Widget给出大小的时候
  • 子Widget需要占据尽可能多的地方

什么叫 子Widget需要尽可能多的占据空间?

  • 像Column ListView这些Wiget它如果没有专门设置对应的属性 那么它默认的情况就是会尽可能多的占据 空间
  • 对于父Widget如果是一个需要知道子Widget的高度的情况 就会无法计算排布

这个时候 父Widget就会不知道怎么排布而报错

比如一个Container套一个ListView这样就会报错

或者是一个ListView套一个ListView

  Widget buildMakeMaterial() {
    return Container(
      child: ListView.builder(
        itemCount: _meal.ingredients.length,
        itemBuilder: (ctx, index) {
          return Card(
            child: Text(_meal.ingredients[index]),
          );
        }
      ),
    );
  }
  • 解决办法
  1. 当然我们可以给它一个高度来解决这个问题
  2. 同时我们可以根据子Widget的不同来设置对应的属性来让他可以 有一个固定的高度
  • 设置高度

我们给外层定一个高度 这样是可以的

但是这个会出现要一个问题 它会有一个部分滚动 作用

当然如果你就是想做这个效果 那就不用管 这样写就可以了

//  2. 制作材料
  Widget buildMakeMaterial() {
    return Container(
      height: 300,
      child: ListView.builder(
        itemCount: _meal.ingredients.length,
        itemBuilder: (ctx, index) {
          return Card(
            child: Text(_meal.ingredients[index]),
          );
        }
      ),
    );
  }

在这里插入图片描述

  • 设置属性

如果是ListView我们可以设置这几个属性让它可以 普通的显示

这里我们设置他们三个样式

  1. shrinkWrap: 是否包裹 true就是要包裹 默认是false
  2. physics: 是否滚动 这样滚动条都看不见了
  3. padding: 以前的flutter版本里面 ListView是有默认的内边距的 所以需要设置这个来减少内边距
//  2. 制作材料
  Widget buildMakeMaterial() {
    return Container(
      color: Colors.orange,
      child: ListView.builder(
        shrinkWrap: true,
        padding: EdgeInsets.zero,
        physics: NeverScrollableScrollPhysics(),
        itemCount: _meal.ingredients.length,
        itemBuilder: (ctx, index) {
          return Card(
            child: Padding(
              padding: const EdgeInsets.all(30.0),
              child: Text(_meal.ingredients[index]),
            ),
          );
        }
      ),
    );
  }

在这里插入图片描述

Column这个东西做为子Widget也是同理 所以我们需要设置属性来解决这个问题

如果是Column 的话我们可以给它设置

	Column {
		mainAxisSize: MainAxisSize.min
	}
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当在Android Studio中切换Flutter SDK之后,有可能会遇到一些报错。以下是一些可能的报错以及它们的解决方法: 1. 缺少Flutter插件:如果Android Studio无法找到Flutter插件,请确保已正确安装Flutter插件。要安装插件,可以打开Android Studio的“设置”菜单,然后导航到“插件”部分。在该部分中,搜索“Flutter”,然后单击“安装”按钮。 2. 缺少相关依赖项:切换Flutter SDK可能会导致一些依赖项缺失。可以尝试运行“flutter doctor”命令来检查缺失的依赖项并解决它们。该命令将列出任何缺失的依赖项并提供修复建议。 3. Flutter版本冲突:如果Flutter SDK的版本与项目中所需的Flutter版本不兼容,则可能会发生冲突。在这种情况下,可以尝试更新或降低Flutter SDK的版本来与项目需求相匹配。可以通过在终端中运行“flutter upgrade”来更新Flutter SDK,并降级到特定版本可以使用“flutter version <version>”命令。 4. 缺少Flutter配置:有时候在切换Flutter SDK后,项目可能需要重新配置。请确保在项目的根目录中运行“flutter create .”命令,以重新生成Flutter配置文件。这将确保项目正确识别和使用新的Flutter SDK。 5. 其他错误:如果以上步骤无法解决问题,则可能存在其他错误。在这种情况下,建议查看错误消息以获取更具体的信息,并搜索相关错误来找到解决办法。可以在Flutter社区论坛、GitHub问题页面等地方寻求帮助,以获取更多定制化的错误解决方案。 总的来说,切换Flutter SDK可能会带来一些问题,但通过检查插件安装、缺失依赖项、版本冲突、重新配置项目以及查找特定错误的解决方法,通常可以解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值