下拉刷新 上拉加载

import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:dio/dio.dart';
import '../../services/utils.dart';

class UpDown extends StatefulWidget{
UpDown({Key key});
_UpDown createState() => _UpDown();
}

class _UpDown extends State<UpDown> {
var page = 1;
var pageFlag = true;
var list = [];
var _scrollController = ScrollController();

@override
initState() {
super.initState();
_getData();
_scrollController.addListener(() { // 上拉加载
var _scrollTop = _scrollController.position.pixels; //获取滚动条下拉的距离
var _scrollHeight = _scrollController.position.maxScrollExtent; //获取整个页面的高度
if(_scrollTop >= _scrollHeight - Screen.width(40)) {
_getData();
}
});
}
// 获取数据
_getData() async{
if(pageFlag == false) return;
var response = await Dio().get('http://www.phonegap100.com/appapi.php?a=getPortalList&catid=20&page=${page}');
var res = json.decode(response.data)['result'];
setState(() {
list.addAll(res);
page++;
});
if(res.length < 20) {
setState(() {
pageFlag = false;
});
}
}

Widget build(BuildContext context) {
// TODO: implement build
return list.length > 0 ? RefreshIndicator(
onRefresh: () async{
await Future.delayed(Duration(milliseconds: 2000), () {
list = [];
page = 1;
_getData();
});
},
child: ListView.builder(
controller: _scrollController,
itemCount: list.length,
itemBuilder: (context, index) {
return Column(
children: <Widget>[
Text('12312'), // 只有这一部分是自己的内容
index == list.length - 1 ? getMoreTips(flag: pageFlag) : SizedBox()
],
);
},
),
) : getMoreTips(flag: pageFlag);
}
}

class getMoreTips extends StatelessWidget{
var flag = true;
getMoreTips({Key key, this.flag}) : super(key: key);
@override
Widget build(BuildContext context) {
// TODO: implement build
return Center(
child: flag ? Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('正在加载...'),
SizedBox(width: Screen.width(10)),
CircularProgressIndicator(strokeWidth: 2)
],
) : Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('没有更多数据了'),
SizedBox(height: Screen.width(10)),
],
),
);
}
}

猜你喜欢

转载自www.cnblogs.com/zhaofeis/p/12534947.html