friends_list.dart 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242
  1. import 'package:flutter/material.dart';
  2. import 'package:liftmanager/res/gaps.dart';
  3. import 'package:liftmanager/net/api_service.dart';
  4. import 'package:liftmanager/utils/toast.dart';
  5. import 'package:liftmanager/widgets/app_bar.dart';
  6. import 'package:liftmanager/internal/search/search_router.dart';
  7. import 'package:liftmanager/widgets/app_search_bar.dart';
  8. import 'package:liftmanager/res/resources.dart';
  9. import 'package:liftmanager/routers/fluro_navigator.dart';
  10. import 'package:liftmanager/widgets/load_image.dart';
  11. import '../model/conversation.dart';
  12. import 'package:provider/provider.dart';
  13. import './message_page/conversation_item.dart';
  14. import 'package:liftmanager/internal/friends/friends_router.dart';
  15. import 'package:liftmanager/utils/utils.dart';
  16. import 'package:liftmanager/mvp/base_page_state.dart';
  17. import 'package:liftmanager/internal/search/presenter/base_list_provider.dart';
  18. // import 'package:liftmanager/internal/friends/model/friend_model.dart';
  19. import 'package:liftmanager/widgets/state_layout.dart';
  20. import 'package:provider/provider.dart';
  21. import 'package:liftmanager/utils/time_format.dart';
  22. import 'package:liftmanager/utils/log_util.dart';
  23. import 'package:liftmanager/widgets/my_refresh_list.dart';
  24. import 'dart:convert';
  25. import 'package:shared_preferences/shared_preferences.dart';
  26. import 'package:liftmanager/utils/fast_notification.dart';
  27. import 'package:liftmanager/utils/theme_utils.dart';
  28. import 'package:flustars/flustars.dart' as FlutterStars;
  29. class FriendsList extends StatefulWidget {
  30. // QuestionList(this.index);
  31. // final String index;
  32. @override
  33. FriendsListState createState() => FriendsListState();
  34. }
  35. class FriendsListState extends State<FriendsList>
  36. with TickerProviderStateMixin, AutomaticKeepAliveClientMixin{
  37. // NewsDetailItem item = NewsDetailItem();
  38. int _page = 1;
  39. bool _hasData = false;
  40. String changeRoomId;
  41. @override
  42. void initState() {
  43. super.initState();
  44. getFriendsList();
  45. print(66666);
  46. FastNotification.addListener("friendAction",(friendsInit){
  47. if(mounted){
  48. setState(() {
  49. });
  50. getStringEvent();
  51. }
  52. });
  53. }
  54. List<dynamic> friendsList = [];
  55. List<dynamic>listOne = [];
  56. List<String> historyMessageString = [];
  57. Future getFriendsList() async {
  58. await NewApiService().getFriendListPage(_page,999999, onSuccess: (res) {
  59. // LogUtil.d(JsonEncoder().convert(res.records));
  60. // LogUtil.d("5555664");
  61. listOne=[];
  62. if(res.records.length > 0){
  63. res.records.forEach((item){
  64. item.isRed = 0;
  65. getHistoryList(item.sessionid,item);
  66. });
  67. }
  68. _hasData = true;
  69. setState(() {});
  70. }, onError: (code, msg) {
  71. toasts(msg);
  72. });
  73. }
  74. void getStringEvent()async{
  75. SharedPreferences prefs = await SharedPreferences.getInstance();
  76. if(prefs.getString("changeRoomId") != null){
  77. changeRoomId = prefs.getString("changeRoomId");
  78. }
  79. getFriendsList();
  80. print(7775);
  81. }
  82. getHistoryList(roomIdss,item)async{
  83. SharedPreferences prefs = await SharedPreferences.getInstance();
  84. historyMessageString = prefs.getStringList(roomIdss);
  85. if(historyMessageString!=null&&historyMessageString.length>0){
  86. List<dynamic> historyMessageqqq = historyMessageString.map((i)=>jsonDecode(i)).toList();
  87. if(historyMessageqqq[historyMessageqqq.length-1]["type"] == 1){
  88. item.msg=historyMessageqqq[historyMessageqqq.length-1]["msg"];
  89. }else if(historyMessageqqq[historyMessageqqq.length-1]["type"] == 2) {
  90. item.msg = "[图片]";
  91. }
  92. item.time=historyMessageqqq[historyMessageqqq.length-1]["time"];
  93. item.isRed = 1;
  94. listOne.add(item);
  95. }else {
  96. listOne.add(item);
  97. }
  98. }
  99. @override
  100. void dispose() {
  101. super.dispose();
  102. }
  103. @override
  104. Widget build(BuildContext context) {
  105. double width = MediaQuery.of(context).size.width;
  106. double height = MediaQuery.of(context).size.height;
  107. LogUtil.d(JsonEncoder().convert(friendsList));
  108. LogUtil.d(JsonEncoder().convert(listOne));
  109. LogUtil.d("5555665-------------");
  110. LogUtil.d(changeRoomId);
  111. friendsList = [];
  112. if(changeRoomId !=null){
  113. dynamic firstContent;
  114. if(listOne.length<1){
  115. friendsList = [];
  116. }else {
  117. listOne.forEach((item){
  118. if(item.sessionid == changeRoomId){
  119. firstContent = item;
  120. }else {
  121. friendsList.add(item);
  122. }
  123. });
  124. if(firstContent != null){
  125. friendsList.insert(0, firstContent);
  126. }
  127. }
  128. }else {
  129. friendsList = listOne;
  130. }
  131. LogUtil.d(JsonEncoder().convert(friendsList));
  132. LogUtil.d("5555677--------------------");
  133. return Scaffold(
  134. appBar: MyAppBar(
  135. centerTitle: "聊天",
  136. isBack: false,
  137. actions:<Widget>[
  138. Utils.getAuthByRouter('people_nearby', false) && FlutterStars.SpUtil.getInt("expertFlag") != 1 ?
  139. FlatButton(
  140. child: Text("附近的人"),
  141. textColor: Colours.dark_text,
  142. highlightColor: Colors.transparent,
  143. onPressed: (){
  144. NavigatorUtils.push(context, FriendsRouter.nearList);
  145. },
  146. ) : Container()
  147. ],
  148. ),
  149. body:
  150. RefreshIndicator(
  151. onRefresh:()async{
  152. setState(() {
  153. _hasData = false;
  154. friendsList = [];
  155. getFriendsList();
  156. });
  157. },
  158. child: Container(
  159. color: ThemeUtils.getTabsBg(context),
  160. child: ListView(
  161. children: _hasData?<Widget>[
  162. friendsList.length>0?listWidgetThis():Container(
  163. height:width,
  164. width:width,
  165. child: Center(
  166. child:Text("暂无数据")
  167. ),
  168. )
  169. ]:<Widget>[
  170. Container(
  171. height:width,
  172. width:width,
  173. child: Center(
  174. child:Text("加载中...")
  175. ),
  176. )
  177. ],
  178. )
  179. )
  180. )
  181. );
  182. }
  183. Widget listWidgetThis (){
  184. LogUtil.d(JsonEncoder().convert(friendsList));
  185. LogUtil.d("55556777777--------------------");
  186. List<Widget> listWidget(context) => friendsList.asMap().keys.map((i) {
  187. return friendsList[i]!=null?ConversationItem(friendsList[i],(sessionid){
  188. for(var i = 0;i<friendsList.length;i++){
  189. if(friendsList[i].sessionid == sessionid){
  190. setState(() {
  191. friendsList[i].isRed = 0;
  192. });
  193. }
  194. }
  195. }):Container(child: null,);
  196. }).toList();
  197. return Column(
  198. crossAxisAlignment: CrossAxisAlignment.start,
  199. children: listWidget(context)
  200. );
  201. }
  202. bool get wantKeepAlive => true;
  203. }