From b6d9ca885c0c4856262f7128ddeb83b61a35f2c9 Mon Sep 17 00:00:00 2001 From: Jolie <412895109@qq.com> Date: Tue, 11 Nov 2025 15:25:13 +0800 Subject: [PATCH] =?UTF-8?q?feat(message):=20=E6=B7=BB=E5=8A=A0=E8=81=8A?= =?UTF-8?q?=E5=A4=A9=E9=A1=B5=E9=9D=A2=E5=B9=B6=E6=9B=B4=E6=96=B0=E8=B5=84?= =?UTF-8?q?=E6=BA=90=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增聊天页面 ChatPage,支持用户跳转和基础 UI 结构 - 在消息会话列表中点击后跳转至 ChatPage - 添加多个图片资源常量:add、audio、emoji、gift、more、video 等 - 更新 README.md,增加 Build Runner 使用说明及常用命令介绍 --- README.md | 25 ++++++++++++- assets/images/add.png | Bin 0 -> 1197 bytes assets/images/audio.png | Bin 0 -> 1869 bytes assets/images/emoji.png | Bin 0 -> 1743 bytes assets/images/gift.png | Bin 0 -> 7398 bytes assets/images/more.png | Bin 0 -> 399 bytes assets/images/video.png | Bin 0 -> 910 bytes lib/generated/assets.dart | 6 ++++ lib/pages/message/chat_page.dart | 45 ++++++++++++++++++++++++ lib/pages/message/conversation_tab.dart | 3 +- 10 files changed, 77 insertions(+), 2 deletions(-) create mode 100644 assets/images/add.png create mode 100644 assets/images/audio.png create mode 100644 assets/images/emoji.png create mode 100644 assets/images/gift.png create mode 100644 assets/images/more.png create mode 100644 assets/images/video.png create mode 100644 lib/pages/message/chat_page.dart diff --git a/README.md b/README.md index 146d7e8..5d41834 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,25 @@ -# dating_touchme_app +## Build Runner 使用说明 +Build Runner 是一个代码生成工具,用于自动化生成 Dart 代码。在本项目中,我们使用 build_runner 来处理各种代码生成功能,如 JSON 序列化、依赖注入等。 + +### 基本用法 + +flutter pub run build_runner build + +这个命令会运行一次构建过程,生成所有必要的代码文件。 + +### 开发模式 + +在开发过程中,如果你希望在文件更改时自动重新生成代码,可以使用 watch 模式: + +flutter pub run build_runner watch + +这将启动一个监听器,当相关文件发生变化时自动重新构建生成的代码。 + +### 常用参数 + +- `--delete-conflicting-outputs`: 删除与生成器输出冲突的文件 +- `--build-filter`: 只构建匹配指定 glob 的文件 + +例如: +flutter pub run build_runner build --delete-conflicting-outputs diff --git a/assets/images/add.png b/assets/images/add.png new file mode 100644 index 0000000000000000000000000000000000000000..7a49bd04c50f15476ab806cfe820b43e11283e7f GIT binary patch literal 1197 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 Hu0mjfSFC*w literal 0 HcmV?d00001 diff --git a/assets/images/emoji.png b/assets/images/emoji.png new file mode 100644 index 0000000000000000000000000000000000000000..6975beb76c651e5347706d963ecf89cd1dca2a07 GIT binary patch literal 1743 zcmV;=1~B=FP)Px#1am@3R0s$N2z&@+hyVZvc}YY;RCt{2UB7Q6H5C3lyFyBb5ISjhn@}NzCR#g) zE{;S+cSsQu75M`wkq{EfCfy&w_?(o=#0dq zEleUjEh0EylN4m^x;CXNttB!t*2%QE*dCMC+UyqM4DPbQPe8GudoXTs)WG9f-T zJ9(Z@AGb>J7p3G4)NR}Zw3r=HlR=^E8c z56ZH9;F8$oPHd7N^yCK^^TI+dA!DEa3TnKSsGh*FPmgR+`2X4;i z^C!AWEqM<8T(Wn>Rlu%oV`Jmr>2&(T&d$zuh%6l#W1mq<{~inmPcJVo|D%+C&lr2%SB``C?bg3%wF*;{ z4e~ll>4yM51@NFMBZRztb#?W%uPhy=)9EKt%8vlNQY(H(O8HfYJd2a?`j<>s;UUn3 zhnn)O>2&&5pv)x@Lf+L>y}7fq^Mj?g#4ka%d+gRP`M4vbrp-nB1ng8)6F_;vH)r0AisB0Z9|QOmfCTUlfbSNI#e1PLn-D^L4&V^Lh0<|J2>E6> z9KIhTx3LJngsR^gB68*31|h^F0FUhoXh^AUPIY5!bg4 z1r7jNbJSdi$#w5KT)Hc3pO?gvJBr?#?Og+7jA!ULVBB)#hB|)ldEv6iO+1+Xc#~U_&USOIAoJIb$qo zK1O|`V)Z*>bhxhRWPsmtn-6sNNhuFgP5+y8q>yhyr_t6l)R9u2#u8}T_8TJKw(X?8 zAeOZiHqq5njFIcIUpi#{#Ybk{^Nfl@ny$mLC8v~1AK8pCPANU@Vn>(DW~U_`^)JoN zy~QB!9icv%k?IHESh1^`pHDiJ5W+jJ&Sq=#_YWJDN0ukb;W;%ggxGT>Q0YFTlvYJK z0H4G{`l$`k*7O`ud``!?m7ZTD9+=#ZeS(ebr0zydV zX$PUiDTm;OOIjEIZ|sJ5$WQRj4pee4=JWZHWAcbEg7e-Svz%H}!&*}b#^W&nd|;60 zoZQxgNB)-+V)EWRvYcA`&{pys(~F`AOyGslS(c;G=rJrwi9(3ibalpXZX3D)X%bpI zj!Vjw&gfhaml1%i54B}ICdm%;McZptO8F^>0~|8FUDM-lL+YqU#=28dqBU7Lb%O7z zpq#)K8~~4OPNy_^9|FhYF`rB(zpqo)x98y!&XL>e{m=J3b=A!{;3yNXzB~ELbBjT} zlNfT?VThff$07Ni>eKl_fWY%9rM_$nK8P#g^s=Nx1`-BfMF(+J2sx0efxJFj;jj$K z)khA*%|xf@PEwqo7j+Dq0eS6nQrW5c;bg~Nc1U6}qz+!m4_sZxBQU#)_?;c~yAC9F zec)l&=OlAHi-f!Au{n25+O?i8h1U_X0_FqV%3GJ{{cQLO_02g7+~f8fxL$8rSw8T} l$kU-Qm&dUt{{ulA{s;Mz(pCI^P00WN002ovPDHLkV1h=vO;Z2> literal 0 HcmV?d00001 diff --git a/assets/images/gift.png b/assets/images/gift.png new file mode 100644 index 0000000000000000000000000000000000000000..d83151b3b01c13d01d15982908167f3e651a4c8c GIT binary patch literal 7398 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 literal 0 HcmV?d00001 diff --git a/assets/images/more.png b/assets/images/more.png new file mode 100644 index 0000000000000000000000000000000000000000..3e64142ce242e5221a8e0260e50bb49fefa546e6 GIT binary patch literal 399 zcmV;A0dW3_P)Px#1am@3R0s$N2z&@+hyVZqIY~r8RA_RT#>Rq{+GpE0X5Z{eJ&$+g3Qc6eLZ{ zvW(getWN_x+!WX5vvnOIgb+dqAp|?x@1&G^9Lx&0Kor&!kW%Vvtydg0zxgvA?z*m8 z7i2-wD;4gIYq4@}tSd0qyN<;HyoaKb=TBplQq-&)gR_y4B@OWQA_T9Op~H$aID`;F z2qA<3yUEZl7(FyeGyEpQTPi$yXnyaN3VUpRBWZA*3D#P#u~e2=D*L=EdL(J~oC-gG tm;iV@9=CP9Fu>Warhkzo-AXB+06)*zb%)Q!AdLV3002ovPDHLkV1l*rrW^nO literal 0 HcmV?d00001 diff --git a/assets/images/video.png b/assets/images/video.png new file mode 100644 index 0000000000000000000000000000000000000000..f991d8dd59703751f5668887b9af1300ad663ded GIT binary patch literal 910 zcmeAS@N?(olHy`uVBq!ia0vp^Q9$g%!3HE5OO#%MsNx`ZCx&(BWI!C2VkgfK4j`!E zNa}Z#I&aq zJN8-RJ!zG2u{o<-vHXIx;Lgs%bF$B}{@5=(z3GZe$-LEv&C|_Z-!t8x6O+<#+s5Sd zXM2vlg%jUvELFSy@SRo7W2=RJGd7BQW<7Zld!levouIflmZv1&OdZS-XTzjXea$fRQy~VssMYhKBH&57H;e6z9|Hi4|9gSkmvolK9 zl;`#`|B*hq)*$di)-J9^c2OS8g8t_$-$>~w{hD*7^vBzf2e+zfOr5WZP3DkIOI~!l zX3-R;gj;nrtjS{eH`gf(?Z{TLV%Lsm?x>L3?R0KahWs1%^wjvgqFprj@b>ByLV#DE^zl|J}j$|6Nngt9Tc@mpUVoyH=F*{S1MHGbup7FM6$f z^L>x&3lkH;xy3Bv3)>B&3IwZU9^N=%xV4F6E~8+r=2DHLyON#0hl%B}lt1Esyj{tC ziml;9p^LGs9Tm4q_m=J6$dkx0u|_pm=6c_+7p?P`d8vJy^YBLW?bRncC9>CYN@hd_ zYcO~uO__E?qsrl2-|y}p@(c{FfeGP9|JJSVUi2e4^s4FGYtx;b^fZI7e=Yy)6dHPc z*Sh`Pi*_&^@c)0ktN2~`k2ym3c>5%$H`qtroxNf8>N8QyXdo?`HH^>bP0 Hl+XkKI-8+G literal 0 HcmV?d00001 diff --git a/lib/generated/assets.dart b/lib/generated/assets.dart index 9dd91ed..6589aef 100644 --- a/lib/generated/assets.dart +++ b/lib/generated/assets.dart @@ -2,7 +2,9 @@ class Assets { Assets._(); + static const String imagesAdd = 'assets/images/add.png'; static const String imagesArrowForwardRight = 'assets/images/arrow_forward_right.png'; + static const String imagesAudio = 'assets/images/audio.png'; static const String imagesAvatarsExample = 'assets/images/avatars_example.png'; static const String imagesBackIcon = 'assets/images/back_icon.png'; static const String imagesBgEditAvatars = 'assets/images/bg_edit_avatars.png'; @@ -11,7 +13,9 @@ class Assets { static const String imagesDiscoverNol = 'assets/images/discover_nol.png'; static const String imagesDiscoverPre = 'assets/images/discover_pre.png'; static const String imagesEditAvatarsIcon = 'assets/images/edit_avatars_icon.png'; + static const String imagesEmoji = 'assets/images/emoji.png'; static const String imagesExampleContent = 'assets/images/example_content.png'; + static const String imagesGift = 'assets/images/gift.png'; static const String imagesHiIcon = 'assets/images/hi_icon.png'; static const String imagesHomeNol = 'assets/images/home_nol.png'; static const String imagesHomePre = 'assets/images/home_pre.png'; @@ -24,6 +28,7 @@ class Assets { static const String imagesMessagePre = 'assets/images/message_pre.png'; static const String imagesMineNol = 'assets/images/mine_nol.png'; static const String imagesMinePre = 'assets/images/mine_pre.png'; + static const String imagesMore = 'assets/images/more.png'; static const String imagesMoreIcon = 'assets/images/more_icon.png'; static const String imagesOnlineIcon = 'assets/images/online_icon.png'; static const String imagesPlayIcon = 'assets/images/play_icon.png'; @@ -32,6 +37,7 @@ class Assets { static const String imagesTabChangeIcon = 'assets/images/tab_change_icon.png'; static const String imagesTalkIcon = 'assets/images/talk_icon.png'; static const String imagesVerifiedIcon = 'assets/images/verified_icon.png'; + static const String imagesVideo = 'assets/images/video.png'; static const String imagesVoiceIcon = 'assets/images/voice_icon.png'; static const String imagesWomenIcon = 'assets/images/women_icon.png'; diff --git a/lib/pages/message/chat_page.dart b/lib/pages/message/chat_page.dart new file mode 100644 index 0000000..165c8b6 --- /dev/null +++ b/lib/pages/message/chat_page.dart @@ -0,0 +1,45 @@ +import 'package:dating_touchme_app/extension/ex_widget.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:get/get.dart'; + +import '../../generated/assets.dart'; + +class ChatPage extends StatefulWidget { + + String userId; + + ChatPage({required this.userId, super.key}); + + @override + State createState() => _ChatPageState(); +} + +class _ChatPageState extends State { + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text("Chat"), + centerTitle: true, + actions: [ + Container( + padding: EdgeInsets.only(right: 16.w), + child: Image.asset(Assets.imagesMore, width: 16.w,), + ).onTap(() { + + }) + ], + leading: IconButton( + icon: Icon(Icons.arrow_back_ios), + onPressed: () { + Get.back(); + }, + ), + ), + body: Container( + + ), + ); + } +} diff --git a/lib/pages/message/conversation_tab.dart b/lib/pages/message/conversation_tab.dart index c0b9d63..01cbd75 100644 --- a/lib/pages/message/conversation_tab.dart +++ b/lib/pages/message/conversation_tab.dart @@ -1,5 +1,6 @@ import 'package:dating_touchme_app/extension/ex_widget.dart'; import 'package:dating_touchme_app/im/im_manager.dart'; +import 'package:dating_touchme_app/pages/message/chat_page.dart'; import 'package:flutter/material.dart'; import 'package:dating_touchme_app/generated/assets.dart'; import 'package:get/get.dart'; @@ -151,7 +152,7 @@ class _ConversationTabState extends State with AutomaticKeepAli int unreadCount = snapshot.data ?? 0; return GestureDetector( onTap: () async{ - await IMManager.instance.sendTextMessage('来了', conversation.id); + Get.to(ChatPage(userId: conversation.id)); }, child: Container( padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12),