listViewBuilder method
Implementation
Widget listViewBuilder(BuildContext context) {
return ListView.separated(
controller: _controller,
physics: AlwaysScrollableScrollPhysics(),
itemCount: _dataList.length + 1,
itemBuilder: (context, index) {
if (index == _dataList.length) {
if (_viewStatus == _ViewStatus.loadMoreFail) {
return Container(
alignment: Alignment.center,
padding: EdgeInsets.all(24.0),
child: GestureDetector(
child: Text(
errorMessage,
style: TextStyle(color: Colors.blueGrey),
),
onTap: () {
if(mounted) {
setState(() {
_viewStatus = _ViewStatus.showData;
});
}
_loadMoreData();
},
),
);
} else if (!_hasNextPage) {
return _currentPage > 2 ?
Container(
alignment: Alignment.center,
padding: EdgeInsets.all(24.0),
child: Text(
"没有更多了",
style: TextStyle(color: Colors.blueGrey),
)) : Container();
} else {
//加载时显示loading
return Container(
padding: const EdgeInsets.all(24.0),
alignment: Alignment.center,
child: SizedBox(
width: 24.0,
height: 24.0,
child: CircularProgressIndicator(strokeWidth: 2.0)),
);
}
} else {
if (index + widget.pageSize >= _dataList.length + 1 &&
_viewStatus != _ViewStatus.loadMore &&
_hasNextPage &&
_isScroll) {
_viewStatus = _ViewStatus.loadMore;
_loadMoreData();
}
return InkWell(
onTap: () {
if (widget.onItemClick != null) {
widget.onItemClick(index, _dataList[index]);
}
},
child: widget.itemViewCreator.bind(index, _dataList[index]));
}
},
separatorBuilder: (context, index) => Divider(height: .0),
);
}