123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276 |
- import 'package:flutter/material.dart';
- import 'package:liftmanager/internal/bbs/page/chat_room.dart';
- import 'package:liftmanager/net/api_service.dart';
- import 'package:liftmanager/utils/toast.dart';
- import 'package:liftmanager/widgets/app_bar.dart';
- import 'package:liftmanager/routers/fluro_navigator.dart';
- // import 'package:liftmanager/widgets/app_search_bar.dart';
- import 'package:liftmanager/widgets/search_app_bar.dart';
- import './message_page/conversation_item.dart';
- import 'package:liftmanager/internal/friends/friends_router.dart';
- import 'package:liftmanager/utils/utils.dart';
- import 'package:liftmanager/utils/log_util.dart';
- import 'dart:convert';
- import 'package:shared_preferences/shared_preferences.dart';
- import 'package:liftmanager/utils/fast_notification.dart';
- import 'package:liftmanager/utils/theme_utils.dart';
- import 'package:flustars/flustars.dart' as FlutterStars;
- class FriendsList extends StatefulWidget {
- @override
- FriendsListState createState() => FriendsListState();
- }
- class FriendsListState extends State<FriendsList>
- with TickerProviderStateMixin, AutomaticKeepAliveClientMixin {
- int _page = 1;
- bool _hasData = false;
- String changeRoomId;
- String _searchText;
- @override
- void initState() {
- super.initState();
- getFriendsList();
- FastNotification.addListener("friendAction", (friendsInit) {
- if (mounted) {
- getStringEvent();
- }
- });
- }
- List<dynamic> friendsList = [];
- List<dynamic> listOne = [];
- List<String> historyMessageString = [];
- Future getFriendsList({String searchWord = ''}) async {
- await NewApiService().getFriendListPage(_page, 999999, searchWord,
- onSuccess: (res) {
- listOne = [];
- if (res.records.length > 0) {
- res.records.forEach((item) {
- // if(item.sessionid == changeRoomId) {
- // item.isRed = 0;
- // }
- listOne.add(item);
- });
- }
- _hasData = true;
- setState(() {});
- }, onError: (code, msg) {
- toasts(msg);
- });
- }
- void getStringEvent() async {
- SharedPreferences prefs = await SharedPreferences.getInstance();
- if (prefs.getString("changeRoomId") != null) {
- changeRoomId = prefs.getString("changeRoomId");
- }
- getFriendsList();
- }
- getHistoryList(roomIdss, item) async {
- SharedPreferences prefs = await SharedPreferences.getInstance();
- historyMessageString = prefs.getStringList(roomIdss);
- if (historyMessageString != null && historyMessageString.length > 0) {
- List<dynamic> historyMessageqqq =
- historyMessageString.map((i) => jsonDecode(i)).toList();
- if (historyMessageqqq[historyMessageqqq.length - 1]["type"] == 1) {
- item.msg = historyMessageqqq[historyMessageqqq.length - 1]["msg"];
- } else if (historyMessageqqq[historyMessageqqq.length - 1]["type"] == 2) {
- item.msg = "[图片]";
- }
- item.time = historyMessageqqq[historyMessageqqq.length - 1]["time"];
- item.isRed = 1;
- listOne.add(item);
- } else {
- listOne.add(item);
- }
- }
- @override
- void dispose() {
- super.dispose();
- }
- @override
- Widget build(BuildContext context) {
- double width = MediaQuery.of(context).size.width;
- LogUtil.d(JsonEncoder().convert(friendsList));
- LogUtil.d(JsonEncoder().convert(listOne));
- LogUtil.d(changeRoomId);
- friendsList = [];
- if (changeRoomId != null) {
- dynamic firstContent;
- if (listOne.length < 1) {
- friendsList = [];
- } else {
- listOne.forEach((item) {
- if (item.sessionid == changeRoomId) {
- firstContent = item;
- } else {
- friendsList.add(item);
- }
- });
- if (firstContent != null) {
- friendsList.insert(0, firstContent);
- }
- }
- } else {
- friendsList = listOne;
- }
- LogUtil.d(JsonEncoder().convert(friendsList));
- return Scaffold(
- appBar: MyAppBar(
- centerTitle: "圈子",
- isBack: false,
- actions: <Widget>[
- if (Utils.getAuthByRouter(context, 'people_nearby', false) &&
- FlutterStars.SpUtil.getInt("expertFlag") != 1)
- FlatButton(
- child: Text(
- "附近的人",
- style: TextStyle(color: Color(0xff333333), fontSize: 14),
- ),
- onPressed: () async {
- await NavigatorUtils.pushResult(context, FriendsRouter.nearList,
- (res) {
- getFriendsList();
- });
- },
- )
- ],
- ),
- body: Column(
- children: [
- SearchAppBar(
- hintText: '搜索',
- searchText: _searchText,
- autoFocus: false,
- onPressed: (searchText) {
- _searchText = searchText;
- _hasData = false;
- friendsList = [];
- getFriendsList(searchWord: searchText);
- },
- ),
- Expanded(
- child: RefreshIndicator(
- onRefresh: () async {
- setState(() {
- _hasData = false;
- friendsList = [];
- getFriendsList();
- });
- },
- child: Container(
- color: ThemeUtils.getTabsBg(context),
- child: ListView(
- children: _hasData
- ? <Widget>[
- friendsList.length > 0
- ? listWidgetThis()
- : Container(
- height: width,
- width: width,
- child: Center(child: Text("暂无数据")),
- )
- ]
- : <Widget>[
- Container(
- height: width,
- width: width,
- child: Center(child: Text("加载中...")),
- )
- ],
- ),
- ),
- ),
- ),
- ],
- ),
- );
- }
- Widget listWidgetThis() {
- LogUtil.d(JsonEncoder().convert(friendsList));
- List<Widget> listWidget(context) => friendsList.map((e) {
- return e != null
- ? ConversationItem(
- conversationItemData: e,
- onTap: () async {
- setState(() {
- e.isRed = 0;
- });
- if (e.dataTable == 3) {
- await Navigator.push(
- context,
- MaterialPageRoute(
- builder: (_) => ChatDetailPage(
- id: e.sessionid,
- type: 'nearToOne',
- toUserId: e.userId,
- jubaoToUserId: e.targetUserId,
- title: e.remarks ?? e.userName),
- ),
- );
- } else {
- await Navigator.push(
- context,
- MaterialPageRoute(
- builder: (_) => ChatDetailPage(
- id: e.sessionid,
- type: 'oneToOne',
- toUserId: '',
- jubaoToUserId: e.targetUserId,
- title: e.expression ?? e.remarks ?? e.userName),
- ),
- );
- }
- getFriendsList();
- },
- onPinning: () {
- // print('pin flat ==== ${e.topFlag}');
- NewApiService().pinChatSession(e.sessionid, 1,
- onSuccess: (res) {}, onError: (code, msg) {
- toasts(msg);
- });
- setState(() {
- friendsList.remove(e);
- friendsList.insert(0, e);
- });
- },
- onDeleting: () {
- NewApiService().removeChatSession(e.id, e.sessionid,
- onSuccess: (res) {}, onError: (code, msg) {
- toasts(msg);
- });
- setState(() {
- friendsList.remove(e);
- });
- },
- )
- : Container(
- child: null,
- );
- }).toList();
- return Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- children: listWidget(context));
- }
- bool get wantKeepAlive => true;
- }
|