29 changed files with 1642 additions and 136 deletions
Split View
Diff Options
-
10android/app/src/main/AndroidManifest.xml
-
BINassets/camera_icon.png
-
BINassets/chat_emoji.png
-
BINassets/chat_gift.png
-
BINassets/chat_more.png
-
BINassets/chat_video.png
-
BINassets/chat_voice.png
-
BINassets/img_icon.png
-
BINassets/menu_icon.png
-
BINassets/mic_line.png
-
BINassets/no_chat_bg.png
-
BINassets/notify_icon.png
-
3devtools_options.yaml
-
63lib/components/chat_message.dart
-
64lib/components/my_message.dart
-
4lib/components/page_appbar.dart
-
395lib/pages/chat_page.dart
-
1049lib/pages/message_page.dart
-
50lib/pages/notify_page.dart
-
15lib/router/app_router.dart
-
4lib/router/route_paths.dart
-
66lib/utils/utils.dart
-
4linux/flutter/generated_plugin_registrant.cc
-
1linux/flutter/generated_plugins.cmake
-
4macos/Flutter/GeneratedPluginRegistrant.swift
-
40pubspec.lock
-
2pubspec.yaml
-
3windows/flutter/generated_plugin_registrant.cc
-
1windows/flutter/generated_plugins.cmake
@ -0,0 +1,3 @@ |
|||
description: This file stores settings for Dart & Flutter DevTools. |
|||
documentation: https://docs.flutter.dev/tools/devtools/extensions#configure-extension-enablement-states |
|||
extensions: |
|||
@ -0,0 +1,63 @@ |
|||
import 'package:flutter/material.dart'; |
|||
import 'package:flutter_screenutil/flutter_screenutil.dart'; |
|||
|
|||
class ChatMessage extends StatefulWidget { |
|||
final String avatar; |
|||
final String message; |
|||
const ChatMessage({super.key, required this.avatar, required this.message}); |
|||
|
|||
@override |
|||
State<ChatMessage> createState() => _ChatMessageState(); |
|||
} |
|||
|
|||
class _ChatMessageState extends State<ChatMessage> { |
|||
@override |
|||
Widget build(BuildContext context) { |
|||
return Container( |
|||
margin: EdgeInsets.only(bottom: 30.w), |
|||
child: Row( |
|||
crossAxisAlignment: CrossAxisAlignment.start, |
|||
children: [ |
|||
Image.asset( |
|||
widget.avatar, |
|||
width: 62.w, |
|||
height: 62.w, |
|||
), |
|||
SizedBox(width: 15.w,), |
|||
Flexible( |
|||
fit: FlexFit.loose, |
|||
child:Container( |
|||
margin: EdgeInsets.only(top: 10.w), |
|||
padding: EdgeInsets.only( |
|||
top: 31.w, |
|||
left: 46.w, |
|||
bottom: 31.w, |
|||
right: 39.w |
|||
), |
|||
decoration: BoxDecoration( |
|||
borderRadius: BorderRadius.only( |
|||
topRight: Radius.circular(18.w), |
|||
bottomRight: Radius.circular(18.w), |
|||
bottomLeft: Radius.circular(18.w), |
|||
), |
|||
color: Colors.white |
|||
), |
|||
child: Text( |
|||
widget.message, |
|||
style: TextStyle( |
|||
fontSize: 31.w, |
|||
color: const Color.fromRGBO(51, 51, 51, 1), |
|||
), |
|||
), |
|||
) |
|||
), |
|||
SizedBox(width: 15.w,), |
|||
SizedBox( |
|||
width: 62.w, |
|||
height: 62.w, |
|||
) |
|||
], |
|||
), |
|||
); |
|||
} |
|||
} |
|||
@ -0,0 +1,64 @@ |
|||
import 'package:flutter/material.dart'; |
|||
import 'package:flutter_screenutil/flutter_screenutil.dart'; |
|||
|
|||
class MyMessage extends StatefulWidget { |
|||
final String avatar; |
|||
final String message; |
|||
const MyMessage({super.key, required this.avatar, required this.message}); |
|||
|
|||
@override |
|||
State<MyMessage> createState() => _MyMessageState(); |
|||
} |
|||
|
|||
class _MyMessageState extends State<MyMessage> { |
|||
@override |
|||
Widget build(BuildContext context) { |
|||
return Container( |
|||
margin: EdgeInsets.only(bottom: 30.w), |
|||
child: Row( |
|||
crossAxisAlignment: CrossAxisAlignment.start, |
|||
mainAxisAlignment: MainAxisAlignment.end, |
|||
children: [ |
|||
SizedBox( |
|||
width: 62.w, |
|||
height: 62.w, |
|||
), |
|||
SizedBox(width: 15.w,), |
|||
Flexible( |
|||
fit: FlexFit.loose, |
|||
child:Container( |
|||
margin: EdgeInsets.only(top: 10.w), |
|||
padding: EdgeInsets.only( |
|||
top: 31.w, |
|||
left: 46.w, |
|||
bottom: 31.w, |
|||
right: 39.w |
|||
), |
|||
decoration: BoxDecoration( |
|||
borderRadius: BorderRadius.only( |
|||
topLeft: Radius.circular(18.w), |
|||
bottomRight: Radius.circular(18.w), |
|||
bottomLeft: Radius.circular(18.w), |
|||
), |
|||
color: const Color.fromRGBO(117, 98, 249, 1) |
|||
), |
|||
child: Text( |
|||
widget.message, |
|||
style: TextStyle( |
|||
fontSize: 31.w, |
|||
color: Colors.white, |
|||
), |
|||
), |
|||
) |
|||
), |
|||
SizedBox(width: 15.w,), |
|||
Image.asset( |
|||
widget.avatar, |
|||
width: 62.w, |
|||
height: 62.w, |
|||
), |
|||
], |
|||
), |
|||
); |
|||
} |
|||
} |
|||
1049
lib/pages/message_page.dart
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -0,0 +1,50 @@ |
|||
import 'package:dating_touchme_app/components/chat_message.dart'; |
|||
import 'package:dating_touchme_app/components/page_appbar.dart'; |
|||
import 'package:flutter/material.dart'; |
|||
import 'package:flutter_screenutil/flutter_screenutil.dart'; |
|||
|
|||
class NotifyPage extends StatefulWidget { |
|||
const NotifyPage({super.key}); |
|||
|
|||
@override |
|||
State<NotifyPage> createState() => _NotifyPageState(); |
|||
} |
|||
|
|||
class _NotifyPageState extends State<NotifyPage> { |
|||
@override |
|||
Widget build(BuildContext context) { |
|||
return Scaffold( |
|||
backgroundColor: const Color.fromRGBO(250, 250, 250, 1), |
|||
appBar: PageAppbar(title: "系统通知", right: Container( |
|||
margin: EdgeInsets.only(right: 28.w), |
|||
child: InkWell( |
|||
child: Image.asset( |
|||
"assets/notify_icon.png", |
|||
width: 31.w, |
|||
height: 35.w, |
|||
), |
|||
), |
|||
),), |
|||
body: SingleChildScrollView( |
|||
child: Container( |
|||
padding: EdgeInsets.symmetric(horizontal: 29.w), |
|||
child: Column( |
|||
children: [ |
|||
SizedBox(height: 56.w,), |
|||
ChatMessage(avatar: "assets/system_notifi.png", message: "【专属福利】收到2张公开体验卡,助你免费公开连线,快速脱单,有效期1天,价值40玫瑰"), |
|||
ChatMessage(avatar: "assets/system_notifi.png", message: "【专属福利】收到2张公开体验卡,助你免费公开连线,快速脱单,有效期1天,价值40玫瑰"), |
|||
ChatMessage(avatar: "assets/system_notifi.png", message: "【专属福利】收到2张公开体验卡,助你免费公开连线,快速脱单,有效期1天,价值40玫瑰"), |
|||
ChatMessage(avatar: "assets/system_notifi.png", message: "【专属福利】收到2张公开体验卡,助你免费公开连线,快速脱单,有效期1天,价值40玫瑰"), |
|||
ChatMessage(avatar: "assets/system_notifi.png", message: "【专属福利】收到2张公开体验卡,助你免费公开连线,快速脱单,有效期1天,价值40玫瑰"), |
|||
ChatMessage(avatar: "assets/system_notifi.png", message: "【专属福利】收到2张公开体验卡,助你免费公开连线,快速脱单,有效期1天,价值40玫瑰"), |
|||
ChatMessage(avatar: "assets/system_notifi.png", message: "【专属福利】收到2张公开体验卡,助你免费公开连线,快速脱单,有效期1天,价值40玫瑰"), |
|||
ChatMessage(avatar: "assets/system_notifi.png", message: "【专属福利】收到2张公开体验卡,助你免费公开连线,快速脱单,有效期1天,价值40玫瑰"), |
|||
ChatMessage(avatar: "assets/system_notifi.png", message: "【专属福利】收到2张公开体验卡,助你免费公开连线,快速脱单,有效期1天,价值40玫瑰"), |
|||
ChatMessage(avatar: "assets/system_notifi.png", message: "【专属福利】收到2张公开体验卡,助你免费公开连线,快速脱单,有效期1天,价值40玫瑰"), |
|||
], |
|||
), |
|||
), |
|||
), |
|||
); |
|||
} |
|||
} |
|||
Write
Preview
Loading…
Cancel
Save