Browse Source

Merge remote-tracking branch 'origin/wr_202303' into wr_202303

# Conflicts:
#	lib/im/chat_details_page.dart
wr_202303
wurong 4 months ago
parent
commit
40c2e8797d
  1. 151
      lib/im/chat_details_page.dart

151
lib/im/chat_details_page.dart

@ -88,7 +88,7 @@ class _ChatDetailsPage extends State<ChatDetailsPage>
await refresh(); await refresh();
socketClient.addCallback(_toUser.mid, (Message message) { socketClient.addCallback(_toUser.mid, (Message message) {
messages.insert(0, message); messages.insert(0, message..state = 1);
refreshState(); refreshState();
jumpToBottom(); jumpToBottom();
}); });
@ -96,16 +96,21 @@ class _ChatDetailsPage extends State<ChatDetailsPage>
jumpToBottom(); jumpToBottom();
} }
refresh() async { Future refresh() async {
List<Message> messagePage = await hxDatabase.queryUList(_toUser.mid, page: page + 1, pageSize: 10);
if (messagePage.isEmpty) {
refreshController.loadNoData();
return;
} else {
refreshController.loadComplete();
}
page += 1; page += 1;
List<Message> messagePage = await hxDatabase.queryUList(_toUser.mid, page: page, pageSize: 10);
if (page == 1) { if (page == 1) {
messages = messagePage; messages = messagePage;
} else { } else {
messages.addAll(messagePage); messages.addAll(messagePage);
} }
refreshController.refreshCompleted(); return Future.value();
return;
} }
/// ///
@ -116,17 +121,18 @@ class _ChatDetailsPage extends State<ChatDetailsPage>
value.getString('user') != "") { value.getString('user') != "") {
userInfo = UserInfo.fromJson(jsonDecode(value.getString('user'))); userInfo = UserInfo.fromJson(jsonDecode(value.getString('user')));
} }
if(apiService == null) if (apiService == null)
apiService = ApiService(Dio(), context: context, token: value.getString("token")); apiService =
ApiService(Dio(), context: context, token: value.getString("token"));
BaseData<UserInfo> baseData = BaseData<UserInfo> baseData =
await apiService.queryInfo().catchError((onError) {}); await apiService.queryInfo().catchError((onError) {});
if (baseData != null && baseData.isSuccess) { if (baseData != null && baseData.isSuccess) {
setState(() { setState(() {
userInfo = baseData.data; userInfo = baseData.data;
}); });
SharedPreferences.getInstance().then((value) => { SharedPreferences.getInstance().then((value) => {
value.setString('user', jsonEncode(baseData.data)), value.setString('user', jsonEncode(baseData.data)),
}); });
} }
} }
@ -328,25 +334,46 @@ class _ChatDetailsPage extends State<ChatDetailsPage>
child: Column( child: Column(
children: [ children: [
Expanded( Expanded(
child: SingleChildScrollView( child: SmartRefresher(
enablePullDown: false,
enablePullUp: true,
header: MyHeader(),
reverse: true,
physics: BouncingScrollPhysics(), physics: BouncingScrollPhysics(),
controller: scrollController, footer: CustomFooter(
child: Column( loadStyle: LoadStyle.ShowWhenLoading,
children: [ builder: (BuildContext context, LoadStatus mode) {
GestureDetector( return (messages.length == 0)
behavior: HitTestBehavior.translucent, ? Container()
onTap: () { : MyFooter(mode);
setState(() { },
emojiShowing = false; ),
isKeyBoardShow = emojiShowing; controller: refreshController,
moreShow = false; onLoading: () {
isKeyBoardShow = moreShow; refresh().then((value) {
FocusScope.of(context).requestFocus(FocusNode()); refreshState();
}); });
}, },
child: chatDetailsList(), child: SingleChildScrollView(
), physics: BouncingScrollPhysics(),
], controller: scrollController,
child: Column(
children: [
GestureDetector(
behavior: HitTestBehavior.translucent,
onTap: () {
setState(() {
emojiShowing = false;
isKeyBoardShow = emojiShowing;
moreShow = false;
isKeyBoardShow = moreShow;
FocusScope.of(context).requestFocus(FocusNode());
});
},
child: chatDetailsList(),
),
],
),
), ),
), ),
flex: 1, flex: 1,
@ -392,7 +419,8 @@ class _ChatDetailsPage extends State<ChatDetailsPage>
child: Column( child: Column(
children: [ children: [
Text( Text(
AppUtils.timeFormatter(DateTime.fromMillisecondsSinceEpoch(int.parse(message.time))), AppUtils.timeFormatter(
DateTime.fromMillisecondsSinceEpoch(int.parse(message.time))),
textAlign: TextAlign.center, textAlign: TextAlign.center,
style: TextStyle( style: TextStyle(
color: Color(0xFFA29E9E), color: Color(0xFFA29E9E),
@ -528,40 +556,41 @@ class _ChatDetailsPage extends State<ChatDetailsPage>
child: Container( child: Container(
alignment: Alignment.centerLeft, alignment: Alignment.centerLeft,
child: Container( child: Container(
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(6), borderRadius: BorderRadius.circular(6),
color: Color(0xFFFFFFFF), color: Color(0xFFFFFFFF),
boxShadow: [ boxShadow: [
BoxShadow( BoxShadow(
color: Color(0xFFA8A3A3).withAlpha(12), color: Color(0xFFA8A3A3).withAlpha(12),
offset: Offset(0, 4), offset: Offset(0, 4),
blurRadius: 4, blurRadius: 4,
spreadRadius: 0, spreadRadius: 0,
), ),
], ],
), ),
padding: EdgeInsets.symmetric( padding: EdgeInsets.symmetric(
vertical: 8.h, vertical: 8.h,
horizontal: 12.w, horizontal: 12.w,
), ),
child: GestureDetector( child: GestureDetector(
onLongPress: () { onLongPress: () {
setState(() { setState(() {
copyIndex = 1; copyIndex = 1;
}); });
}, },
child: Text( child: Text(
tex = message.content, tex = message.content,
textAlign: TextAlign.left, textAlign: TextAlign.left,
style: TextStyle( style: TextStyle(
height: 1.2.h, height: 1.2.h,
color: Color(0XFF0D0D0D), color: Color(0XFF0D0D0D),
fontSize: 17.sp, fontSize: 17.sp,
fontWeight: MyFontWeight.medium, fontWeight: MyFontWeight.medium,
),
), ),
), ),
), ),
),), ),
), ),
], ],
), ),
@ -727,7 +756,7 @@ class _ChatDetailsPage extends State<ChatDetailsPage>
width: 12.w, width: 12.w,
), ),
MImage( MImage(
userInfo?.headimg??"", userInfo?.headimg ?? "",
isCircle: true, isCircle: true,
height: 44.h, height: 44.h,
width: 44.h, width: 44.h,

Loading…
Cancel
Save