listViewBuilder method

Widget listViewBuilder(
  1. BuildContext context
)

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),
  );
}