Browse Source

feat(message): 添加聊天页面并更新资源文件

- 新增聊天页面 ChatPage,支持用户跳转和基础 UI 结构
- 在消息会话列表中点击后跳转至 ChatPage
- 添加多个图片资源常量:add、audio、emoji、gift、more、video 等
- 更新 README.md,增加 Build Runner 使用说明及常用命令介绍
ios
Jolie 4 months ago
parent
commit
b6d9ca885c
10 changed files with 77 additions and 2 deletions
  1. 25
      README.md
  2. BIN
      assets/images/add.png
  3. BIN
      assets/images/audio.png
  4. BIN
      assets/images/emoji.png
  5. BIN
      assets/images/gift.png
  6. BIN
      assets/images/more.png
  7. BIN
      assets/images/video.png
  8. 6
      lib/generated/assets.dart
  9. 45
      lib/pages/message/chat_page.dart
  10. 3
      lib/pages/message/conversation_tab.dart

25
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

BIN
assets/images/add.png

Before After
Width: 84  |  Height: 84  |  Size: 1.2 KiB

BIN
assets/images/audio.png

Before After
Width: 84  |  Height: 84  |  Size: 1.8 KiB

BIN
assets/images/emoji.png

Before After
Width: 79  |  Height: 79  |  Size: 1.7 KiB

BIN
assets/images/gift.png

Before After
Width: 78  |  Height: 84  |  Size: 7.2 KiB

BIN
assets/images/more.png

Before After
Width: 64  |  Height: 52  |  Size: 399 B

BIN
assets/images/video.png

Before After
Width: 90  |  Height: 68  |  Size: 910 B

6
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';

45
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<ChatPage> createState() => _ChatPageState();
}
class _ChatPageState extends State<ChatPage> {
@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(
),
);
}
}

3
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<ConversationTab> 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),

Loading…
Cancel
Save