import 'package:flutter/material.dart'; import 'package:gmalpha_flutter/commonModel/net/DioUtil.dart'; import 'package:gmalpha_flutter/messageModel/model/message/message.dart'; import 'package:gmalpha_flutter/messageModel/model/notification_model.dart'; import 'package:pull_to_refresh/pull_to_refresh.dart'; import 'package:gmalpha_flutter/commonModel/list_item.dart'; import '../home/message_item.dart'; import '../home/message_notification_item.dart'; class NotificationList extends StatefulWidget { @override _NotificationListState createState() => _NotificationListState(); } class _NotificationListState extends State { @override List dataArr = List(); int pageIndex = 1; List data1 = []; RefreshController _refreshController = RefreshController(initialRefresh: true); void _onRefresh() async{ pageIndex = 1; List newdataArr = List(); newdataArr = await _fetchListData(); if (mounted) setState(() { dataArr = newdataArr; }); _refreshController.refreshCompleted(); } void _onLoading() async{ pageIndex ++; List newData = List(); newData = await _fetchMesssageList(); if (mounted) setState(() { this.dataArr.addAll(newData); }); _refreshController.loadComplete(); } Future> _fetchMesssageList() async { List messageList = List(); // BaseResp baseresp = await DioUtil().request(Method.get, "api/v1/message/notice", queryParameters: {'page': pageIndex, 'count': 10}); // if (baseresp.code != 0) { // return new Future.error(baseresp.msg); // } // // if (baseresp.data != null) { // messageList = baseresp.data.map((value) { // return NotificationModel.fromJson(value); // }).toList(); // } _refreshController.refreshCompleted(); return messageList; } Future> _fetchListData() async { List dataArr = List(); List messageData = await _fetchMesssageList(); messageData.forEach((item) { dataArr.add(item); }); return dataArr; } @override Widget build(BuildContext context) { return Scaffold( appBar: new AppBar( title: new Text('消息'), ), body: new Container( child: SmartRefresher( child: _createListView(), controller: _refreshController, enablePullDown: true, enablePullUp: true, header: WaterDropHeader(), onRefresh: (){ _onRefresh(); }, onLoading: () { _onLoading(); } ), ) ); } Widget _createListView() { List dataArr = this.dataArr; return ListView.builder( shrinkWrap: true, key: new PageStorageKey('message-list'), itemCount: dataArr.length, itemBuilder: (context,index) { ListItem item = dataArr[index]; if (item is Message) { return new MessageItem(onPressed: (){}, message:item); } else if (item is NotificationItem){ return new MessageNotificationItem(onPressed: (){}, notification: item); } else { return Text('类型错误'); } }, ); } }