flutter中Cloumn的children中包含了一个ListView提示hasSize错误


代码:
Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Shopping List'), ), body: Column( mainAxisSize: MainAxisSize.min, children: [ ListView( padding: EdgeInsets.symmetric(vertical: 8.0), children: widget.products .map((Product product) => ShoppingListItem( product: product, inCart: _shoppingCart.contains(product), onCartChanged: _handleCartChanged, )) .toList(), ), ], )); }
错误提示:

Vertical viewport was given unbounded height.
RenderBox was not laid out: RenderViewport#6b63c NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
'package:flutter/src/rendering/box.dart':
Failed assertion: line 1785 pos 12: 'hasSize'

Column中已经添加了MainAxisSize.min属性,但还是报hasSize错误。

分析原因:根据ide的提示,垂直方向上给了一个无限大的高度,这个是因为子Widget是ListView,flutter中ListView在构建控件时会“询问”子组件所要求的空间,而ListView无法给出具体值,导致出错(粗略理解,后期分析源码后再来分析)。
//TODO 后期有能力时分析源码找出原因

解决办法:将ListView放入一个能确定高度的Widget中。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM