import 'package:flutter/material.dart'; // import 'package:gmalpha_flutter/model/message/message.dart' as prefix0; import 'package:gmalpha_flutter/pages/message/home/message_notification_item.dart'; import 'message_item.dart'; import 'package:gmalpha_flutter/model/message/message.dart'; import 'package:gmalpha_flutter/netWork/DioUtil.dart'; import 'package:pull_to_refresh/pull_to_refresh.dart'; import 'package:gmalpha_flutter/base/list_item.dart'; class MessageHomePage extends StatefulWidget { @override _MessageHomePageState createState() => _MessageHomePageState(); } class _MessageHomePageState extends State<MessageHomePage> { List<ListItem> messageList = List<ListItem>(); List<ListItem> dataArr = List<ListItem>(); int pageIndex = 1; List<String> data1 = []; RefreshController _refreshController = RefreshController(initialRefresh: true); void _onRefresh() async{ pageIndex = 1; List<ListItem> newdataArr = List<ListItem>(); newdataArr = await _fetchListData(); if (mounted) setState(() { dataArr = newdataArr; }); _refreshController.refreshCompleted(); } void _onLoading() async{ pageIndex ++; List<ListItem> newData = List<ListItem>(); newData = await _fetchMesssageList(); if (mounted) setState(() { this.dataArr.addAll(newData); }); _refreshController.loadComplete(); } Future<List<ListItem>> _fetchMesssageList() async { List<Message> messageList = List<Message>(); BaseResp<List> baseresp = await DioUtil().request<List>(Method.get, "api/v1/reply/my", 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 Message.fromJson(value); }).toList(); } _refreshController.refreshCompleted(); return messageList; } Future<List<ListItem>> _fetchNewestInfo() async { List<ListItem> notiData = List<ListItem>(); BaseRespR noteResp = await DioUtil().requestR(Method.get, 'api/v1/push/newest/info'); Map noteData = noteResp.data; String noteContent = noteData['content']; NotificationItem noteItem = NotificationItem('images/message_noti.png', noteContent, 0, '通知'); notiData.add(noteItem); BaseRespR likeResp = await DioUtil().requestR(Method.get, 'api/v1/message/unread',queryParameters: {'type': 0}); print(likeResp); Map likeData = likeResp.data; String likeContent = ''; NotificationItem likeItem = NotificationItem('images/message_like.png', likeContent, likeData['count'], 'Like'); if (likeItem.count > 0) { likeItem.content = '有${likeItem.count}个人Like了你'; } else { likeItem.content = '还没有人给你Like哦~'; } notiData.add(likeItem); BaseRespR attentionResp = await DioUtil().requestR(Method.get, 'api/v1/message/unread',queryParameters: {'type': 1}); Map attData = attentionResp.data; String attContent = ''; NotificationItem attItem = NotificationItem('images/message_att.png', attContent, attData['count'], '关注'); if (attItem.count > 0) { attItem.content = '有${attItem.count}个人关注了你'; } else { attContent = '还没有人给你关注哦~'; } notiData.add(attItem); // this.dataArr = dataArr; return notiData; } Future<List<ListItem>> _fetchListData() async { List<ListItem> dataArr = List<ListItem>(); dataArr = await _fetchNewestInfo(); List<ListItem> 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<ListItem> 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('类型错误'); } }, ); } }