Flutter使用小技巧四(持续更新...)
Flutter使用小技巧一(持续更新)
Flutter使用小技巧二(持续更新)
Flutter使用小技巧三(持续更新)
解决依赖冲突
dependency_overrides:
# 固定版本
third_part_dependecy_name: x.x.x
Row、Column主轴对齐方式
默认:mainAxisAlignment:MainAxisAlignment.start
spaceBetween
: 将空闲空间均匀的分布在child wight
之间spaceAround
:将空闲空间均匀对的分布在child wight
前、后一半之间(child wight
前、后一半空间相等)spaceEvenly
:将空闲空间均匀的分布在child wight
前后之间(所有空闲空间相等)
Row
Column
Future cathError 异常时添加默认返回值
Future<int> getA()async{
throw 1;
}
int i= await getA().catchError((e)=>2);
打印输出i=2
如何在Column中嵌入横着滚动的ListView
Column(children: [
Text('HEAD'),
ListView.builder(
scrollDirection: Axis.horizontal,
itemCount: 200,
itemBuilder(_,index) => Item()
)
Text('FOOT'),
])
很显然上面的代码一定会抛出异常,因为ListView
当前滑动方向是横着的,所以它的交叉轴就是Column
的主轴,我们知道Column
的主轴方向是竖着的高度是无限的 ,向下回传递一个无限约束,然而在ListView
确认视窗的时候交叉轴是无法确定的就会导致ListView
无法布局,有一下几种办法:
- 固定ListView的高度:
ListView
外层包裹一个SizeBox
- 将
ListView
替换为Row
,数据量小的情况下 - 使用Stack嵌套ListView
我们知道Stack
的 尺寸是非Positioned
的那个Widget
的尺寸,这样我们就可以将一个Item()
作为布局用
Stack(
children: [
/// 仅隐藏但是会布局测量
Opacity(opacity:0.0, child: Item()),
/// 宽度全充满
SizeBox(width: double.infinity),
Positioned.fill(
child