动态发布

This commit is contained in:
2022-10-27 11:41:50 +08:00
parent aa30a11af2
commit 6077d6dcaf
13 changed files with 30 additions and 17 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 153 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 310 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 131 KiB

View File

@@ -51,6 +51,9 @@ class MomentController extends GetxController {
} }
Future<void> loadMoreList() async { Future<void> loadMoreList() async {
if (momentData.value == null || momentData.value!.data!.isEmpty) {
return;
}
final res = await MomentProvider.fetchMomentList( final res = await MomentProvider.fetchMomentList(
momentData.value?.data?.last.createdAt, momentData.value?.data?.last.createdAt,
); );

View File

@@ -52,9 +52,9 @@ class PublishController extends GetxController {
); );
EasyLoading.dismiss(); EasyLoading.dismiss();
if (res != null) { if (res != null) {
UiTools.toast('发表成功'); UiTools.toast('动态发布成功');
Get.back();
MomentController.to.refreshList(); MomentController.to.refreshList();
Get.back();
} }
} }

View File

@@ -16,7 +16,7 @@ class MomentProvider {
); );
return MomentModel.fromJson(result); return MomentModel.fromJson(result);
} catch (e) { } catch (e) {
UiTools.toast('获取发现列表失败'); UiTools.toast(e.toString());
} }
return null; return null;
} }
@@ -25,10 +25,10 @@ class MomentProvider {
/// [dynamicId] /// [dynamicId]
static Future<bool?> likeMoment(int dynamicId) async { static Future<bool?> likeMoment(int dynamicId) async {
try { try {
final result = await Http.post('user/dynamics/$dynamicId/like'); final result = await Http.post('dynamics/$dynamicId/like');
return result['is_like']; return result['is_like'];
} catch (e) { } catch (e) {
UiTools.toast('点赞失败'); UiTools.toast(e.toString());
} }
return null; return null;
} }
@@ -37,10 +37,10 @@ class MomentProvider {
/// [dynamicId] /// [dynamicId]
static Future<bool?> delMoment(int dynamicId) async { static Future<bool?> delMoment(int dynamicId) async {
try { try {
final result = await Http.delete('user/dynamics/$dynamicId'); final result = await Http.delete('dynamics/$dynamicId');
return result; return result;
} catch (e) { } catch (e) {
UiTools.toast('删除失败'); UiTools.toast(e.toString());
} }
return null; return null;
} }
@@ -56,7 +56,7 @@ class MomentProvider {
]) async { ]) async {
try { try {
final result = await Http.post( final result = await Http.post(
'user/dynamics/$dynamicId/comment', 'dynamics/$dynamicId/comment',
data: { data: {
'content': content, 'content': content,
'parent_id': parentId, 'parent_id': parentId,
@@ -78,7 +78,7 @@ class MomentProvider {
]) async { ]) async {
try { try {
final result = await Http.delete( final result = await Http.delete(
'user/dynamics/$dynamicId/comment/$commentId', 'dynamics/$dynamicId/comment/$commentId',
); );
return result; return result;
} catch (e) { } catch (e) {
@@ -107,13 +107,13 @@ class MomentProvider {
required List<String> pictures, required List<String> pictures,
}) async { }) async {
try { try {
final result = await Http.post('user/dynamics', data: { final result = await Http.post('dynamics', data: {
'description': description, 'description': description,
'pictures': pictures, 'pictures': pictures,
}); });
return result; return result;
} catch (e) { } catch (e) {
UiTools.toast('发布失败'); UiTools.toast(e.toString());
} }
return null; return null;
} }

View File

@@ -2,6 +2,7 @@ import 'package:chat/routes/app_routes.dart';
import 'package:chat/routes/auth_routes.dart'; import 'package:chat/routes/auth_routes.dart';
import 'package:chat/routes/contact_routes.dart'; import 'package:chat/routes/contact_routes.dart';
import 'package:chat/routes/conversation_routes.dart'; import 'package:chat/routes/conversation_routes.dart';
import 'package:chat/routes/moments_routes.dart';
import 'package:chat/routes/user_routes.dart'; import 'package:chat/routes/user_routes.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
@@ -12,6 +13,7 @@ class AppRouter {
AppRoutes.router, AppRoutes.router,
ConversationRoutes.router, ConversationRoutes.router,
ContactRoutes.router, ContactRoutes.router,
MomentsRoutes.router,
UserRoutes.router, UserRoutes.router,
]; ];
} }

View File

@@ -2,7 +2,7 @@ import 'package:chat/middleware/auth_middleware.dart';
import 'package:chat/views/moments/detail/detail_page.dart'; import 'package:chat/views/moments/detail/detail_page.dart';
import 'package:chat/views/moments/index/index_page.dart'; import 'package:chat/views/moments/index/index_page.dart';
import 'package:chat/views/moments/publish/preview_page.dart'; import 'package:chat/views/moments/publish/preview_page.dart';
import 'package:chat/views/moments/publish/publish_page.dart'; import 'package:chat/views/moments/publish/index_page.dart';
import 'package:chat/views/moments/user/index_page.dart'; import 'package:chat/views/moments/user/index_page.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';

View File

@@ -15,8 +15,9 @@ class MomentsPage extends StatelessWidget {
final ctrl = MomentController.to; final ctrl = MomentController.to;
return Scaffold( return Scaffold(
body: Padding( body: Padding(
padding: padding: EdgeInsets.only(
EdgeInsets.only(bottom: MediaQuery.of(context).viewPadding.bottom), bottom: MediaQuery.of(context).viewPadding.bottom,
),
child: EasyRefresh.custom( child: EasyRefresh.custom(
scrollController: ctrl.scrollController, scrollController: ctrl.scrollController,
controller: ctrl.refreshController, controller: ctrl.refreshController,

View File

@@ -1,7 +1,8 @@
import 'package:chat/configs/app_colors.dart'; import 'package:chat/configs/app_colors.dart';
import 'package:chat/controllers/private_controller.dart';
import 'package:chat/routes/contact_routes.dart';
import 'package:chat/routes/moments_routes.dart'; import 'package:chat/routes/moments_routes.dart';
import 'package:chat/services/auth_service.dart'; import 'package:chat/services/auth_service.dart';
import 'package:chat/services/tabbar_service.dart';
import 'package:chat/widgets/custom_avatar.dart'; import 'package:chat/widgets/custom_avatar.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
@@ -80,7 +81,7 @@ class _HeaderBackground extends StatelessWidget {
bottom: 32, bottom: 32,
child: GestureDetector( child: GestureDetector(
child: Image.asset( child: Image.asset(
'assets/images/login_bg.png', 'assets/backgrounds/moment_2.jpg',
fit: BoxFit.cover, fit: BoxFit.cover,
), ),
), ),
@@ -108,7 +109,12 @@ class _HeaderBackground extends StatelessWidget {
const SizedBox(width: 8), const SizedBox(width: 8),
Obx(() { Obx(() {
return GestureDetector( return GestureDetector(
onTap: () => TabbarService.to.index = 4, onTap: () async {
await PrivateController.to.setCurrentFriend(
AuthService.to.userId,
);
Get.toNamed(ContactRoutes.friendProfile);
},
child: CustomAvatar( child: CustomAvatar(
AuthService.to.userInfo.value.avatar, AuthService.to.userInfo.value.avatar,
size: 64, size: 64,

View File

@@ -60,6 +60,7 @@ dev_dependencies:
flutter: flutter:
uses-material-design: true uses-material-design: true
assets: assets:
- assets/backgrounds/
- assets/chats/ - assets/chats/
- assets/icons/ - assets/icons/
- assets/images/ - assets/images/