Listview是Flutter中比较常见的一种组件。
具体用法为:
new RefreshIndicator(
child: new Center(
child: new ListView.builder(
ItemCount: _getLength(),
itemBuilder: (BuildContext context,int position){
return _getListData(position);
}
)
),
onRefresh: _onEventRefresh
),
注意:
- RefreshIndicator 是下拉刷新控件,child中包含下拉控件包裹的范围,onRefresh中包含下拉的要实现的方法。
- onRefresh中的方法返回类型必须为Future,然后在该方法里面如果要用到异步方法,请用await 完成线程同步
- listview.builder 中itemCount 为获得的数据长度。
- getListData(position) 中实现item的布局。
ListView Item的点击事件
对于listview来说,如果不一定需要监听整个item的点击事件,而是只需要监听item中的某一个控件的点击事件,比如item中有一个按钮,只需要监听这个按钮的点击事件,这个怎么实现呢?
new Container(
alignment: Alignment.centerRight,
width: double.infinity,
child: new FlatButton(
onPressed: () => _readArticle(position),
child: new Text(
"查看全文",
style: new TextStyle(
color: Colors.blue
),
),
),
)
这里要特别注意下,onPressed后要写成onPressed: () => _readArticle(position)
。如果直接调用onPressed: _readArticle(position)
会造成初始化时加载_readArticle且点击不触发。
原因很简单:()=>
符号表示传递的是回调函数,不使用的话表示直接执行这个函数。