第六章 SliverGridDelegateWithMaxCrossAxisExtent maxCrossAxisExtent的疑问
SliverGridDelegateWithMaxCrossAxisExtent 该子类实现了一个纵轴子元素为固定最大长度的layout算法,其构造函数为:
SliverGridDelegateWithMaxCrossAxisExtent({ double maxCrossAxisExtent, double mainAxisSpacing = 0.0, double crossAxisSpacing = 0.0, double childAspectRatio = 1.0, }) maxCrossAxisExtent为子元素在纵轴上的最大长度,之所以是“最大”长度,是因为纵轴方向每个子元素的长度仍然是等分的,举个例子,如果ViewPort的纵轴长度是450,那么当maxCrossAxisExtent的值在区间(450/4,450/3]内的话,子元素最终实际长度都为150,而childAspectRatio所指的子元素纵轴和主轴的长度比为最终的长度比。其它参数和SliverGridDelegateWithFixedCrossAxisCount相同。
看了这篇的说法 maxCrossAxisExtent 字段我还是不太理解 (450/4,450/3]内的话 4 和3 哪来的, 和childAspectRatio 又有什么关系
希望可以描述的更加清楚
后来我理解了maxCrossAxisExtent,但是我还是希望这段凭空而来的 4和3 能说清楚
这只是举了一个例子,屏幕宽度是固定的,而每行显示的数量是相同的,所以宽度要能被整除,所以如果一个子元素长度不能被整除,则最终子元素的实际长度会被扩充。对于上面的示例来说,如果ViewPort的纵轴长度是450,maxCrossAxisExtent的值在区间(450/4,450/3]内的话,最终每行会显示三个,子元素最终实际长度都为150。