friends_list.dart 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  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. getHistoryList(item.sessionid,item);
  65. });
  66. }
  67. _hasData = true;
  68. setState(() {});
  69. }, onError: (code, msg) {
  70. toasts(msg);
  71. });
  72. }
  73. void getStringEvent()async{
  74. SharedPreferences prefs = await SharedPreferences.getInstance();
  75. if(prefs.getString("changeRoomId") != null){
  76. changeRoomId = prefs.getString("changeRoomId");
  77. }
  78. getFriendsList();
  79. print(7775);
  80. }
  81. getHistoryList(roomIdss,item)async{
  82. SharedPreferences prefs = await SharedPreferences.getInstance();
  83. historyMessageString = prefs.getStringList(roomIdss);
  84. if(historyMessageString!=null&&historyMessageString.length>0){
  85. List<dynamic> historyMessageqqq = historyMessageString.map((i)=>jsonDecode(i)).toList();
  86. if(historyMessageqqq[historyMessageqqq.length-1]["type"] == 1){
  87. item.msg=historyMessageqqq[historyMessageqqq.length-1]["msg"];
  88. }else if(historyMessageqqq[historyMessageqqq.length-1]["type"] == 2) {
  89. item.msg = "[图片]";
  90. }
  91. item.time=historyMessageqqq[historyMessageqqq.length-1]["time"];
  92. listOne.add(item);
  93. }else {
  94. listOne.add(item);
  95. }
  96. }
  97. @override
  98. void dispose() {
  99. super.dispose();
  100. }
  101. @override
  102. Widget build(BuildContext context) {
  103. double width = MediaQuery.of(context).size.width;
  104. double height = MediaQuery.of(context).size.height;
  105. LogUtil.d(JsonEncoder().convert(friendsList));
  106. LogUtil.d("5555665-------------");
  107. friendsList = [];
  108. if(changeRoomId !=null){
  109. dynamic firstContent;
  110. listOne.forEach((item){
  111. if(item.sessionid == changeRoomId){
  112. firstContent = item;
  113. }else {
  114. friendsList.add(item);
  115. }
  116. });
  117. friendsList.insert(0, firstContent);
  118. }else {
  119. friendsList = listOne;
  120. }
  121. LogUtil.d(JsonEncoder().convert(friendsList));
  122. LogUtil.d("5555665--------------------");
  123. return Scaffold(
  124. appBar: MyAppBar(
  125. centerTitle: "聊天",
  126. isBack: false,
  127. actions:<Widget>[
  128. Utils.getAuthByRouter('people_nearby', false) && FlutterStars.SpUtil.getInt("expertFlag") != 1 ?
  129. FlatButton(
  130. child: Text("附近的人"),
  131. textColor: Colours.dark_text,
  132. highlightColor: Colors.transparent,
  133. onPressed: (){
  134. NavigatorUtils.push(context, FriendsRouter.nearList);
  135. },
  136. ) : Container()
  137. ],
  138. ),
  139. body:
  140. RefreshIndicator(
  141. onRefresh:()async{
  142. setState(() {
  143. _hasData = false;
  144. friendsList = [];
  145. getFriendsList();
  146. });
  147. },
  148. child: Container(
  149. color: ThemeUtils.getTabsBg(context),
  150. child: ListView(
  151. children: _hasData?<Widget>[
  152. friendsList.length>0?listWidgetThis():Container(
  153. height:width,
  154. width:width,
  155. child: Center(
  156. child:Text("暂无数据")
  157. ),
  158. )
  159. ]:<Widget>[
  160. Container(
  161. height:width,
  162. width:width,
  163. child: Center(
  164. child:Text("加载中...")
  165. ),
  166. )
  167. ],
  168. )
  169. )
  170. )
  171. );
  172. }
  173. Widget listWidgetThis (){
  174. LogUtil.d(JsonEncoder().convert(friendsList));
  175. LogUtil.d("55556777777--------------------");
  176. List<Widget> listWidget(context) => friendsList.asMap().keys.map((i) {
  177. return friendsList[i]!=null?ConversationItem(friendsList[i]):Container(child: null,);
  178. }).toList();
  179. return Column(
  180. crossAxisAlignment: CrossAxisAlignment.start,
  181. children: listWidget(context)
  182. );
  183. }
  184. bool get wantKeepAlive => true;
  185. }