解决Flutter报错boxconstraints has non-normalized height/width constraints

出错场景

如果我们在使用约束时没有正确的传入宽高,比如以下代码

ConstrainedBox(/// 设置最小高度为150, 最大高度为100.constraints: BoxConstraints(minHeight: 150,maxHeight: 100),child: Container(color: Colors.red,child: Center(child: Text('呵呵'),),),
),

运行会报以下错误

======== Exception caught by widgets library =======================================================
The following assertion was thrown building AsyncTaskPage(dirty, dependencies: [MediaQuery, _ViewScope], state: _AsyncTaskPageState#e16b3):
BoxConstraints has non-normalized height constraints.The offending constraints were: BoxConstraints(0.0<=w<=Infinity, 150.0<=h<=100.0; NOT NORMALIZED)
The relevant error-causing widget was: AsyncTaskPage AsyncTaskPage:file:///Users/ado/work/flutter/flutter_app/lib/main.dart:115:30
When the exception was thrown, this was the stack: 
#0      BoxConstraints.debugAssertIsValid.<anonymous closure>.throwError (package:flutter/src/rendering/box.dart:520:9)
#1      BoxConstraints.debugAssertIsValid.<anonymous closure> (package:flutter/src/rendering/box.dart:563:9)
#2      BoxConstraints.debugAssertIsValid (package:flutter/src/rendering/box.dart:578:6)
#3      new ConstrainedBox (package:flutter/src/widgets/basic.dart:2511:27)
#4      _AsyncTaskPageState._centerScrollEffect (package:flutter_app/async_task_page.dart:74:11)
#5      _AsyncTaskPageState.build (package:flutter_app/async_task_page.dart:48:13)
#6      StatefulElement.build (package:flutter/src/widgets/framework.dart:5198:27)
#7      ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5086:15)
#8      StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5251:11)
#9      Element.rebuild (package:flutter/src/widgets/framework.dart:4805:7)
#10     BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2780:19)
#11     WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:903:21)
#12     RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:358:5)
#13     SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1284:15)
#14     SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1214:9)
#15     SchedulerBinding.scheduleWarmUpFrame.<anonymous closure> (package:flutter/src/scheduler/binding.dart:939:7)
#19     _RawReceivePort._handleMessage (dart:isolate-patch/isolate_patch.dart:189:12)
(elided 3 frames from class _Timer and dart:async-patch)
====================================================================================================

源码分析

进入BoxConstraintsdebugAssertIsValid方法查看(package:flutter/src/rendering/box.dart:520:9)

      if (minWidth < 0.0 && minHeight < 0.0) {throwError(ErrorSummary('BoxConstraints has both a negative minimum width and a negative minimum height.'));}if (minWidth < 0.0) {throwError(ErrorSummary('BoxConstraints has a negative minimum width.'));}if (minHeight < 0.0) {throwError(ErrorSummary('BoxConstraints has a negative minimum height.'));}if (maxWidth < minWidth && maxHeight < minHeight) {throwError(ErrorSummary('BoxConstraints has both width and height constraints non-normalized.'));}if (maxWidth < minWidth) {throwError(ErrorSummary('BoxConstraints has non-normalized width constraints.'));}if (maxHeight < minHeight) {throwError(ErrorSummary('BoxConstraints has non-normalized height constraints.'));}if (isAppliedConstraint) {if (minWidth.isInfinite && minHeight.isInfinite) {throwError(ErrorSummary('BoxConstraints forces an infinite width and infinite height.'));}if (minWidth.isInfinite) {throwError(ErrorSummary('BoxConstraints forces an infinite width.'));}if (minHeight.isInfinite) {throwError(ErrorSummary('BoxConstraints forces an infinite height.'));}}

通过代码得知,只要出现以上最小宽高为负数、最小宽高大于最大宽高、最小宽高是无穷大就会报错,所以我们只需要在使用约束的时候注意设置正确的minWidth、maxWidth、minHeight、maxHeight即可。

正确代码

ConstrainedBox(/// 设置最小高度为100, 最大高度为150.constraints: BoxConstraints(minHeight: 100,maxHeight: 150),child: Container(color: Colors.red,child: Center(child: Text('呵呵'),),),
),

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/197874.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

54.螺旋矩阵(顺时针打印矩形元素)

题目 class Solution {public List<Integer> spiralOrder(int[][] matrix) {int m matrix.length, n matrix[0].length;int leftUpM 0, leftUpN 0, rightDownM m - 1, rightDownN n - 1;List<Integer> res new ArrayList<>();while (leftUpM < ri…

【题目】栈和队列专题

文章目录 专题一&#xff1a;栈系列1. 中缀表达式转后缀表达式&#xff08;逆波兰式&#xff09;2. 有效的括号3. 用栈实现队列4. 最小栈 专题一&#xff1a;栈系列 1. 中缀表达式转后缀表达式&#xff08;逆波兰式&#xff09; 算法原理 2. 有效的括号 题目链接 算法原理 代…

SpringBoot-监听Nacos动态修改日志级别

目录 一、pom文件 二、项目配置文件 三、日志配置文件 四、日志监听类 五、日志动态修改服务类 线上系统的日志级别一般都是 INFO 级别&#xff0c;有时候需要查看 WARN 级别的日志&#xff0c;所以需要动态修改日志级别。微服务项目中使用 Nacos 作为注册中心&#xff0c…

C++面试宝典第2题:逆序输出整数

题目 写一个方法&#xff0c;将一个整数逆序打印输出到控制台。注意&#xff1a;当输入的数字含有结尾的0时&#xff0c;输出不应带有前导的0。比如&#xff1a;123的逆序输出为321&#xff0c;8600的逆序输出为68&#xff0c;-609的逆序输出为-906。 解析 这道题本身并没有什么…

Java架构师技术架构路线

目录 1 概论2 如何规划短中长期的技术架构路线图3 如何规划面向未来的架构4 如何修订路线图执行过程中的偏差5 如何落地路线图-阿里系糙快猛之下的敏捷模式想学习架构师构建流程请跳转:Java架构师系统架构设计 1 概论 首先,规划一个短中长期的技术路线图是非常重要的。短中…

java SSM毕业生信息管理myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

前言 学校的规模不断扩大&#xff0c;学生数量急剧增加&#xff0c;有关学生的各种信息量也成倍增长。面对庞大的信息量需要有学生信息管理系统来提高学生管理工作的效率。通过这样的系统可以做到信息的规范管理、科学统计和快速查询、修改、增加、删除等&#xff0c;从而减少管…

lv11 嵌入式开发 RTC 17

目录 1 RTC简介 ​编辑2 Exynos4412下的RTC控制器 2.1 概述 2.2 特征 2.3 功能框图 3 寄存器介绍 3.1 概述 3.2 BCD格式的年月日寄存器 3.3 INTP中断挂起寄存器 3.4 RTCCON控制寄存器 3.5 CURTICCNT 作为嘀嗒定时器使用的寄存器 4 RTC编程 5 练习 1 RTC简介 RTC(…

Ubuntu22.04安装Mariadb

安装Mariadb $ sudo apt update $ sudo apt install mariadb-server安装完后&#xff0c;可以用下面命令查看服务状态 $ sudo service mariadb status配置Mariadb 安装完mariadb后&#xff0c;可以使用mysql_secure_installation命令做一下安全配置 $ sudo mysql_secure_in…

关于优雅的使用SQL多行转多列的记录(doris)

文章目录 应用需求场景记录过程1. 准备数据2. 给数据根据姓名分组&#xff0c;加上序号.3. 根据name分组成map结构4. 拆分map 应用需求场景 准备的数据是这样的&#xff1a; 需要将每个人的成绩显示在一行上&#xff0c;需要的结果如下&#xff0c;但是我的情况是课程有非常…

联想LJ2655DN激光打印机清零方法

随着打印机的使用越来越频繁&#xff0c;需要更换耗材的时候也越来越多&#xff1b;但是更换上新的耗材后&#xff0c;很多用户都会遇到一个问题&#xff0c;就是更换完新的耗材后打印机仍然提示寿命将近&#xff0c;或者无墨粉盒灯情况&#xff0c;这个时候就需要我们对打印机…

【JavaSE】多线程(学习笔记)

一、多线程概述 进程&#xff1a;正在运行的程序 系统进行资源分配粒调用的独立单位每一个进程都有它自己的内存空间和系统资源 线程&#xff1a;进程中的单个顺序控制流&#xff0c;是一条执行路径 单线程&#xff1a;一条执行路径多线程&#xff1a;多条执行路径 二、多线…

qt 5.15.2 主窗体事件及绘制功能

qt 5.15.2 主窗体事件及绘制功能 显示主窗体效果图如下所示&#xff1a; main.cpp #include "mainwindow.h"#include <QApplication>int main(int argc, char *argv[]) {QApplication a(argc, argv);MainWindow w;w.setFixedWidth(600);w.setFixedHeight(6…

Nat easy IP ACL

0表示匹配&#xff0c;1表示任意&#xff08;主机位0.0.0.255&#xff08;255主机位&#xff09;&#xff09; rule deny source 192.168.2.1 0 设置拒绝192.168.2.1的主机通过 记住将其应用到接口上 [AR2]acl 2000 //创建基本ACL [AR2-acl-basic-2000]rule deny source 192…

Fiddler的配置、原理和使用

一、Fiddler的工作原理 本地应用与服务器之间所有的请求&#xff08;request&#xff09;和响应&#xff08;response&#xff09;&#xff0c;由fiddler进行转发&#xff0c;此时fiddler以代理服务器的方式存在。 由于所有的网络数据都要经过fiddler&#xff0c;因此&#xf…

014 OpenCV canny边缘检测

一、环境 本文使用环境为&#xff1a; Windows10Python 3.9.17opencv-python 4.8.0.74 二、canny原理 OpenCV中的Canny边缘检测算法是一种基于图像处理的计算机视觉技术&#xff0c;主要用于检测图像中的边缘。Canny边缘检测算法的原理是通过计算图像中像素点之间的梯度值来…

ClickHouse(16)ClickHouse日志引擎Log详细解析

日志引擎系列 这些引擎是为了需要写入许多小数据量&#xff08;少于一百万行&#xff09;的表的场景而开发的。 这系列的引擎有&#xff1a; StripeLogLogTinyLog 共同属性 引擎&#xff1a; 数据存储在磁盘上。 写入时将数据追加在文件末尾。 不支持突变操作,也就是更新…

python开发案例教程-清华大学出版社(张基温)答案(3.1)

目录 练习 3.1 1、判断题 2、选择题 3、代码分析题 4、程序设计题 练习 3.1 1、判断题 (1) 函数定义可以嵌套。 (✔) (2) 函数调用可以嵌套。 …

SAP MIGO前台批次特性值增强(自动带出)<转载>

原文链接&#xff1a;https://blog.csdn.net/qq_45063256/article/details/128464411 增强点&#xff1a;程序LCTMSF3Z 在MIGO中点击批次右边的分类时&#xff0c;自动将该批次的批次特性值带出来。 现在打开程序LCTMSF3Z 该程序就只有一个FORM&#xff0c;首先切换到编辑…

AIGC: 关于ChatGPT中基于API实现一个StreamClient流式客户端

Java版GPT的StreamClient 可作为其他编程语言的参考注意: 下面包名中的 xxx 可以换成自己的代码基于java&#xff0c;来源于网络&#xff0c;可修改成其他编程语言实现参考前文: https://blog.csdn.net/Tyro_java/article/details/134748994 1 &#xff09;核心代码结构设计 …

RTLS 在医疗保健中使用的好处

实时定位系统 (RTLS) 和物联网 (IoT) 提供有关患者、医疗设备和工作人员的数据。 医疗保健管理员可以通过互联的生态系统改善患者和员工的体验&#xff0c;同时降低运营成本并提高效率。了解医疗保健系统如何使用 RTLS 以及如何实现优化物联网策略的优势。 定义医疗保健实时定…