错误:RenderBox 未布局,断言失败:第 1940 行 pos 12:“hasSize”

2023-12-24

我无法修复这个错误

RenderBox 未布局:RenderPointerListener#2b92a relayoutBoundary=up9 需要绘制需要合成位更新 'package:flutter/src/rendering/box.dart': 断言失败:第 1940 行 位置 12:'hasSize'。相关的导致错误的小部件是 ->ListView

这是我的所有产品部分。

import 'package:flutter/material.dart';
import 'package:hospital/Drawer/drawercontent.dart';
import 'package:hospital/Product/AllProducts/ProductList/product_list.dart';
import 'package:hospital/Product/AllProducts/carousel.dart';
import 'package:hospital/Product/AllProducts/category.dart';

class AllProducts extends StatefulWidget {
  @override
  _AllProductsState createState() => _AllProductsState();
}

class _AllProductsState extends State<AllProducts> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          backgroundColor: Colors.green,

          title: Text(
            "Product",
            style: TextStyle(fontStyle: FontStyle.italic),
          ),
          actions: [

            IconButton(
              icon: Icon(Icons.person),
              onPressed: () => print("open cart"),
            ),
          ],

        ),
        drawer: Drawer(
          child: DrawerContent(),
        ),
        body: ListView(

          children: [
            Carousel(),
            SizedBox(
              height: 10.0,
            ),

            CategoryPage(),
            SizedBox(
              height: 20.0,
            ),
            ProductList()

          ],
        ));
  }
}

这是我的产品部分

import 'dart:convert';

import 'package:flutter/material.dart';
import 'package:flutter/foundation.dart';
import 'package:hospital/Product/AllProducts/ProductList/network_req.dart';
import 'package:hospital/Product/AllProducts/ProductList/product_model.dart';
import 'package:hospital/constant.dart';
import 'package:http/http.dart' as http;
// import '../../drawercontent.dart';

class ProductList extends StatefulWidget {
  final s_id;

  const ProductList({key, this.s_id}) : super(key: key);
  @override
  _ProductListState createState() => _ProductListState();
}

class _ProductListState extends State<ProductList> {
  @override
  Widget build(BuildContext context) {
    return Container(
      // ignore: missing_required_param
      child: FutureBuilder<List<Model>>(
        // future: NetReq.fetchTeams(),
        future: NetReq.fetchTeams(widget.s_id),

        builder: (context, snapshot) {
          if (snapshot.hasError) {
            return Text("Error ${snapshot.error}");
          } else if (snapshot.hasData) {
            return GridView.count(

                // childAspectRatio: 1.0,
                padding: EdgeInsets.only(left: 20, right: 20),
                crossAxisCount: 2,
                crossAxisSpacing: 18,
                mainAxisSpacing: 18,

                children: snapshot.data.map((team) {
                  return Card(
                    elevation: 3.0,
                    margin: EdgeInsets.all(10.0),
                    shape: RoundedRectangleBorder(

                      borderRadius: BorderRadius.circular(12.0),
                    ),
                    child: Container(
                      width: 150.0,
                      padding: EdgeInsets.all(8.0),

                      child: Column(
                        crossAxisAlignment: CrossAxisAlignment.start,
                        children: <Widget>[
                          Expanded(
                            child: ClipRRect(

                              borderRadius: BorderRadius.circular(14.0),
                              child: Container(
                                decoration: BoxDecoration(
                                  borderRadius: BorderRadius.circular(12.0),
                                  image: DecorationImage(
                                    image: NetworkImage(
                                        "https://5.imimg.com/data5/MR/TK/KJ/SELLER-769696/tulac-granules-500x500.jpeg"),
                                  ),

                                ),
                              ),
                            ),
                          ),
                          SizedBox(height: 12.0),

                          Text(
                              // "Tulac Granules, For Personal, Packaging Size: 90 Gm",
                              team.teamUniqId,
                              overflow: TextOverflow.ellipsis,
                              maxLines: 2,

                              style: kTitleStyle),
                          SizedBox(height: 6.0),
                          Text(
                              // "\u20B9 239/ Box",
                              team.teamType,

                              maxLines: 1,
                              style: kSubTitleStyle),
                        ],
                      ),
                    ),

                  );
                }).toList());
          }
          return Center(
            child: CircularProgressIndicator(),

          );
        },
      ),
    );

  }
}


当 ListView 没有约束高度使其获得无限高度时会发生这种情况,您可以使用两种解决方案来解决此问题

  1. add shrinkWrap: true作为参数 这将告诉 ListView 使用尽可能小的空间,

  2. 用高度受限的小部件包裹您的 ListView,例如SizedBox or a Container,并像这样给它一个高度和宽度

       Container(
            height: 50,
            width: 50,
            child: ListView()
              )

希望这能解决你的问题

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

错误:RenderBox 未布局,断言失败:第 1940 行 pos 12:“hasSize” 的相关文章

随机推荐

  • 将 Android 手机中的图像和视频获取到自定义图库中

    我正在尝试创建一个自定义图库 允许用户从其 Android 设备上包含的所有照片和视频中进行挑选 我知道如何创建仅包含照片和视频的图库 但如果我想将两者结合起来 我该怎么做 我认为问题归结于我如何创建光标 为了选择所有视频 我这样创建了光标
  • 如何将数据从隔离作用域传递到父作用域?

    我对使用 AngularJS 相当陌生 我想做的是创建一个指令并从其中的父作用域调用函数 我能够完成此任务 但我似乎无法弄清楚如何通过表达式将数据从隔离范围传递到父范围 Angular 开发者指南中对此的解释有点令人困惑 该指令 app d
  • Nodemon - 排除文件

    我想从 NodeMon 的监控中排除一些特定文件 我怎样才能做到这一点 我现有的配置 nodemon all script app js options watchedExtensions js 为了让 NodeMon 忽略监控中的一堆文件
  • 使用 jQuery 以编程方式单击 链接

    我知道这个问题以前曾被问过 但在网上搜索后我似乎找不到直接的答案 the HTML a href index php jQuery 这两个都不起作用 myAnchor click or myAnchor trigger click 实现这一
  • 使用 SlimDX 设置常量缓冲区

    我一直在关注 Microsoft Direct3D11 教程 但使用 C 和 SlimDX 我正在尝试设置常量缓冲区 但不确定如何创建或设置它 我只是尝试使用常量缓冲区设置三个矩阵 世界 视图和投影 但我在每个阶段 创建 数据输入并将其传递
  • 从 C# 以编程方式创建 Excel VBA 代码和按钮

    我正在使用简单的方法 该方法将我的 DataGridView 保存到 Excel 文档 仅 1 个工作表 中 并添加 VBA 代码和一个用于运行 VBA 代码的按钮 public void SaveFile string filePath
  • Windows Phone 8.1 DatePicker 中无法将类型“%0”的实例添加到类型“%1”的集合中

    嘿 我正在使用 MVVM 模式在 Windows Phone 8 1 中开发一个应用程序 我想从以下位置获取日期日期选择器 on the 日期更改事件在视图模型中 运行程序后我收到此错误 App1 exe WinRT 中第一次出现 Wind
  • 如何在java中获取给定的日期字符串格式(模式)?

    我想获取给定日期字符串的格式 示例 我有一个像这样的字符串2011 09 27T07 04 21 97 05 00该字符串的日期格式是yyyy MM dd T HH mm ss SSS 这里我想在传递 string 2011 09 27T0
  • 在许可证页面上添加复选框和单选按钮

    我正在 Nsis 中编写脚本 我需要在许可证页面上有选项单选按钮以及用于再次确认的复选框 是否可以这样做 因为如果我尝试插入较高优先级的是复选框 而我缺少单选按钮 最好我想只修改许可证页面而不创建自定义页面 感谢您的帮助 选项A 使用修改后
  • 为什么它对造型无懈可击?

    我只想将其颜色更改为 DD4814 但我不能 顺便说一句 这是一个 分享按钮 可能是什么原因 span class st sharethis span
  • 如何更改笔记本 Rmarkdown 中的 dpi 内联代码输出

    我知道在将 rmarkdown 笔记本编织为 html 时如何更改绘图的 dpi 但是 有没有一种方法可以更改 rmarkdown 笔记本中生成的绘图的 dpi 而无需编织文档 即在处理笔记本时绘图显示为两个代码块之间的内联输出 None
  • 有调试生产功能程序的实际经验吗?

    我感兴趣的是使用哪些工具和方法来诊断大型功能程序中的缺陷 有哪些工具有用 我目前的理解是 printf 调试 例如添加日志记录和重新部署 是通常使用的 如果您已经调试过一个功能系统 那么它与调试使用 OO 或过程语言构建的系统有何不同 Sa
  • 如何优化带有重复子查询的大查询

    我有以下包含重复子查询的巨大查询 它对我来说看起来效率很低 我该如何优化它 SELECT T2 date1 T2 date2 T2 period T1 market T1 ticker 0 AS scenario FROM SELECT D
  • 动态字段上的 jQuery x-editable 插件?

    我制作了一个脚本 可以在单击按钮时添加动态输入 并使用相应的 x 按钮删除不需要的输入 我的需要是添加x 可编辑每个新创建的动态输入上的插件 我正在使用 x editable 以这种方式 在 x editable 弹出窗口中选择的选项上 右
  • Python odbc;如何查找odbc中的所有表

    有什么方法可以通过 odbc 连接获取所有可用表的列表 我必须从一路生成的表中获取数据 因此我事先不知道名称 在回答此问题时未指定 ODBC 驱动程序 From PyODBC 文档 http code google com p pyodbc
  • 如何在 Visual Basic 6 (vb6) 中使用 TLS 1.2 - REST

    APIGee https apigee com api management 正在将请求迁移到 TLS 1 2 操作系统 Windows Server 2003 我有一个用 vb6 开发的旧应用程序 但由于这次新迁移 它停止工作 这是我的代
  • 速度模板和 JavaScript

    我尝试将 javascript 添加到我的速度模板中 table tr td Name td td currency CurrencyName td tr tr td Jual td td div currency Buy div td t
  • openstacksdk如何更改当前用户密码

    我找到了CLI or API请求方法 它们对我有用 如下所示 source etc kolla admin openrc sh openstack user password set password newpsw original pas
  • 我如何使用 python 请求登录 instagram?

    你好 我正在尝试使用 python requests 库登录 Instagram 但是当我尝试时 Instagram 将我变成了 错误请求 有谁知道我该如何解决这个问题 我寻找解决这个问题的方法 但没有找到任何东西 请帮忙 谢谢 它正在工作
  • 错误:RenderBox 未布局,断言失败:第 1940 行 pos 12:“hasSize”

    我无法修复这个错误 RenderBox 未布局 RenderPointerListener 2b92a relayoutBoundary up9 需要绘制需要合成位更新 package flutter src rendering box d