Flutter解决报错Incorrect use of ParentDataWidget以及边界约束问题

Flutter解决报错Incorrect use of ParentDataWidget以及边界约束问题

报错信息如下:
在这里插入图片描述
关于这种报错怎么看呢?
1
1处告诉我们这个错误跟父组件有关,然后看到2处,就能分析出在加载自己写的HomePage这个页面时,该页面下的Column->Container->ConstrainedBox->Expanded->ConstrainedBox这个路径下的子组件出现了问题。
解决方案是把Expanded这个控件给撤了,直接上ConstrainedBox。
原代码:

Container(
          // width: MediaQuery.of(context).size.width,
          height: 36.0,
          child: Expanded(
            flex: 1,
            child: ConstrainedBox(
              constraints: BoxConstraints.expand(),
              child: Stack(
                alignment: AlignmentDirectional.topCenter,
                children: [
                  Positioned(
                    child: Text("为你精心推荐",textDirection: TextDirection.ltr,style: TextStyle(fontSize: 20),),
                    left: 3.0,
                    top: 3.0,
                  ),
                  Positioned(
                      right: 3.0,
                      top: 3.0,
                      child: Container(
                        child:  Text("查看更多",textDirection: TextDirection.rtl,style: TextStyle(fontSize: 16),),
                        /*Padding(
                        padding: EdgeInsets.all(4),
                        child:
                      ),*/
                        decoration: BoxDecoration(
                            border: Border.all(color: Colors.black87,width: 1.0,style: BorderStyle.solid),
                            borderRadius: BorderRadius.circular(20)
                        ),
                      )
                  )
                ],
              ),
            ),
          ),
       )

修改后的代码:

Container(
          // width: MediaQuery.of(context).size.width,
          height: 36.0,
          child: ConstrainedBox(
            constraints: BoxConstraints.expand(),
            child: Stack(
              alignment: AlignmentDirectional.topCenter,
              children: [
                Positioned(
                  child: Text("为你精心推荐",textDirection: TextDirection.ltr,style: TextStyle(fontSize: 20),),
                  left: 3.0,
                  top: 3.0,
                ),
                Positioned(
                    right: 3.0,
                    top: 3.0,
                    child: Container(
                      child:  Text("查看更多",textDirection: TextDirection.rtl,style: TextStyle(fontSize: 16),),
                      /*Padding(
                        padding: EdgeInsets.all(4),
                        child:
                      ),*/
                      decoration: BoxDecoration(
                          border: Border.all(color: Colors.black87,width: 1.0,style: BorderStyle.solid),
                          borderRadius: BorderRadius.circular(20)
                      ),
                    )
                )
              ],
            ),
          )
       )

为什么这样修改就对了?
经过各种百度搜索,发现Flutter 中的 widget 由在其底层的 RenderBox 对象渲染而成。渲染框由其父级 widget 给出约束,并根据这些约束调整自身尺寸大小。约束是由最小宽度、最大宽度、最小高度、最大高度四个方面构成;尺寸大小则由特定的宽度和高度两个方面构成。
具体的可参照

https://chenglu.blog.csdn.net/article/details/102481814

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
当在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可能会带来一些问题,但通过检查插件安装、缺失依赖项、版本冲突、重新配置项目以及查找特定错误的解决方法,通常可以解决这些问题
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值