瞎扯
一个APP最常用的大控件是什么?
当然是列表控件了.
app正常来说50%以上的页面是列表
列表的写的越快越利索,app开发越简单.
ListView
Key key,
Axis scrollDirection = Axis.vertical, //滑动方向
bool reverse = false, //是否倒序显示 正序 false 倒序true
ScrollController controller, //滑动控制器,比如用这个定位到某一个位置
bool primary, //如果内容不足,则用户无法滚动 而如果为true,它们总是可以尝试滚动。
ScrollPhysics physics,// 滑动属性
bool shrinkWrap = false, //子条目内容自适配
EdgeInsetsGeometry padding,// 内间距
this.itemExtent,
bool addAutomaticKeepAlives = true,
bool addRepaintBoundaries = true,
double cacheExtent, //设置预加载的区域
List<Widget> children = const <Widget>[], // 具体条目.
可以看到,这里是需要一个weight集合,而这明显不是我想要的。因为这意味着我需要先把所有的weight都创建出来,或者动态往里面添加删除的是weight。
按照android的思维,我应该是传入bean数组,通过bean来动态生成weight。
这明显不是我想要的
ListView.builder
ListView.builder({
Key key,
Axis scrollDirection = Axis.vertical,
bool reverse = false,
ScrollController controller,
bool primary,
ScrollPhysics physics,
bool shrinkWrap = false,
EdgeInsetsGeometry padding,
this.itemExtent,
@required IndexedWidgetBuilder itemBuilder,
int itemCount,
bool addAutomaticKeepAlives = true,
bool addRepaintBoundaries = true,
double cacheExtent,
}) : childrenDelegate = new SliverChildBuilderDelegate(
这个就比较像了.
其中的
@required IndexedWidgetBuilder itemBuilder,
方法
例如:
new ListView.builder(
itemCount: 20,
itemBuilder: (context, i) => this.getItem(i),
),
Widget getItem(int i) {
return new Card(
margin: EdgeInsets.fromLTRB(10.0, 10.0, 10.0, 0.0),
child: Padding(
padding: EdgeInsets.all(10.0),
child: Row(
children: <Widget>[
Column(
children: <Widget>[Text("菜${i}")],
),
],
)),
);
}
这样一个列表就出来了.
交流群:493180098,这是个很少吹水,交流学习的群.
APP开发维护咨询群 : 492685472 ,承接APP迭代.开发维护.咨询业务,付费快速解决问题.
网友评论