Flutter如何让Column从左下角开始布局,使用Align无效仍在左上角怎么办
问题原因
contentImage返回的Container没有明确的尺寸约束,仅会自适应内部Column的内容大小,内部的Align组件仅能在和Column等大的小容器内生效,无法实现相对于整个图片区域的底部左对齐。同时Stack的普通子组件默认不会自动撑满Stack的可用空间,也是导致对齐不生效的核心原因。
解决方案
给contentImage套上Positioned.fill组件,让它撑满整个Stack的可用空间,此时内部的Align就可以基于整个Stack的尺寸做底部左对齐,符合预期效果。
修改后的核心代码
@override Widget build(BuildContext context) { return Scaffold( backgroundColor: kBackgroundColor, body: ListView( padding: EdgeInsets.zero, children: [ Stack( children: [ destinationImage(), // 新增Positioned.fill包裹contentImage,撑满Stack区域 Positioned.fill( child: contentImage(), ), ], ) ], ), ); } // contentImage方法无需修改 Widget contentImage() { return Container( padding: EdgeInsets.symmetric(horizontal: defaultSideMargin), child: Align( alignment: Alignment.bottomLeft, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( 'Rialto Bridge', style: whiteTextStyle.copyWith( fontSize: 24.0, fontWeight: semiBold, ), ), Text( 'Italy', style: whiteTextStyle.copyWith( fontSize: 16.0, fontWeight: light, ), ), ], ), ), ); }
实现效果

内容的提问来源于stack exchange,提问作者caeruleum
相关产品推荐
相关产品推荐

