diff --git a/assets/backgrounds/moment_1.jpg b/assets/backgrounds/moment_1.jpg new file mode 100644 index 0000000..108541e Binary files /dev/null and b/assets/backgrounds/moment_1.jpg differ diff --git a/assets/backgrounds/moment_2.jpg b/assets/backgrounds/moment_2.jpg new file mode 100644 index 0000000..d9a8961 Binary files /dev/null and b/assets/backgrounds/moment_2.jpg differ diff --git a/assets/backgrounds/moment_3.jpg b/assets/backgrounds/moment_3.jpg new file mode 100644 index 0000000..eec480b Binary files /dev/null and b/assets/backgrounds/moment_3.jpg differ diff --git a/assets/backgrounds/moment_4.jpg b/assets/backgrounds/moment_4.jpg new file mode 100644 index 0000000..4878fbc Binary files /dev/null and b/assets/backgrounds/moment_4.jpg differ diff --git a/lib/controllers/moment_controller.dart b/lib/controllers/moment_controller.dart index e1ff87e..796f6ea 100644 --- a/lib/controllers/moment_controller.dart +++ b/lib/controllers/moment_controller.dart @@ -51,6 +51,9 @@ class MomentController extends GetxController { } Future loadMoreList() async { + if (momentData.value == null || momentData.value!.data!.isEmpty) { + return; + } final res = await MomentProvider.fetchMomentList( momentData.value?.data?.last.createdAt, ); diff --git a/lib/controllers/publish_controller.dart b/lib/controllers/publish_controller.dart index 02a1cb8..29508b9 100644 --- a/lib/controllers/publish_controller.dart +++ b/lib/controllers/publish_controller.dart @@ -52,9 +52,9 @@ class PublishController extends GetxController { ); EasyLoading.dismiss(); if (res != null) { - UiTools.toast('发表成功'); - Get.back(); + UiTools.toast('动态发布成功'); MomentController.to.refreshList(); + Get.back(); } } diff --git a/lib/providers/moment_provider.dart b/lib/providers/moment_provider.dart index 28eeaca..0db1c73 100644 --- a/lib/providers/moment_provider.dart +++ b/lib/providers/moment_provider.dart @@ -16,7 +16,7 @@ class MomentProvider { ); return MomentModel.fromJson(result); } catch (e) { - UiTools.toast('获取发现列表失败'); + UiTools.toast(e.toString()); } return null; } @@ -25,10 +25,10 @@ class MomentProvider { /// [dynamicId] static Future likeMoment(int dynamicId) async { try { - final result = await Http.post('user/dynamics/$dynamicId/like'); + final result = await Http.post('dynamics/$dynamicId/like'); return result['is_like']; } catch (e) { - UiTools.toast('点赞失败'); + UiTools.toast(e.toString()); } return null; } @@ -37,10 +37,10 @@ class MomentProvider { /// [dynamicId] static Future delMoment(int dynamicId) async { try { - final result = await Http.delete('user/dynamics/$dynamicId'); + final result = await Http.delete('dynamics/$dynamicId'); return result; } catch (e) { - UiTools.toast('删除失败'); + UiTools.toast(e.toString()); } return null; } @@ -56,7 +56,7 @@ class MomentProvider { ]) async { try { final result = await Http.post( - 'user/dynamics/$dynamicId/comment', + 'dynamics/$dynamicId/comment', data: { 'content': content, 'parent_id': parentId, @@ -78,7 +78,7 @@ class MomentProvider { ]) async { try { final result = await Http.delete( - 'user/dynamics/$dynamicId/comment/$commentId', + 'dynamics/$dynamicId/comment/$commentId', ); return result; } catch (e) { @@ -107,13 +107,13 @@ class MomentProvider { required List pictures, }) async { try { - final result = await Http.post('user/dynamics', data: { + final result = await Http.post('dynamics', data: { 'description': description, 'pictures': pictures, }); return result; } catch (e) { - UiTools.toast('发布失败'); + UiTools.toast(e.toString()); } return null; } diff --git a/lib/routes/app_router.dart b/lib/routes/app_router.dart index e90c3d0..8c1dd22 100644 --- a/lib/routes/app_router.dart +++ b/lib/routes/app_router.dart @@ -2,6 +2,7 @@ import 'package:chat/routes/app_routes.dart'; import 'package:chat/routes/auth_routes.dart'; import 'package:chat/routes/contact_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:get/get.dart'; @@ -12,6 +13,7 @@ class AppRouter { AppRoutes.router, ConversationRoutes.router, ContactRoutes.router, + MomentsRoutes.router, UserRoutes.router, ]; } diff --git a/lib/routes/moments_routes.dart b/lib/routes/moments_routes.dart index f4addd8..919d798 100644 --- a/lib/routes/moments_routes.dart +++ b/lib/routes/moments_routes.dart @@ -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/index/index_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:get/get.dart'; diff --git a/lib/views/moments/index/index_page.dart b/lib/views/moments/index/index_page.dart index a37fc15..40dc374 100644 --- a/lib/views/moments/index/index_page.dart +++ b/lib/views/moments/index/index_page.dart @@ -15,8 +15,9 @@ class MomentsPage extends StatelessWidget { final ctrl = MomentController.to; return Scaffold( body: Padding( - padding: - EdgeInsets.only(bottom: MediaQuery.of(context).viewPadding.bottom), + padding: EdgeInsets.only( + bottom: MediaQuery.of(context).viewPadding.bottom, + ), child: EasyRefresh.custom( scrollController: ctrl.scrollController, controller: ctrl.refreshController, diff --git a/lib/views/moments/index/widgets/moment_header.dart b/lib/views/moments/index/widgets/moment_header.dart index f16a30a..3c87e83 100644 --- a/lib/views/moments/index/widgets/moment_header.dart +++ b/lib/views/moments/index/widgets/moment_header.dart @@ -1,7 +1,8 @@ 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/services/auth_service.dart'; -import 'package:chat/services/tabbar_service.dart'; import 'package:chat/widgets/custom_avatar.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; @@ -80,7 +81,7 @@ class _HeaderBackground extends StatelessWidget { bottom: 32, child: GestureDetector( child: Image.asset( - 'assets/images/login_bg.png', + 'assets/backgrounds/moment_2.jpg', fit: BoxFit.cover, ), ), @@ -108,7 +109,12 @@ class _HeaderBackground extends StatelessWidget { const SizedBox(width: 8), Obx(() { return GestureDetector( - onTap: () => TabbarService.to.index = 4, + onTap: () async { + await PrivateController.to.setCurrentFriend( + AuthService.to.userId, + ); + Get.toNamed(ContactRoutes.friendProfile); + }, child: CustomAvatar( AuthService.to.userInfo.value.avatar, size: 64, diff --git a/lib/views/moments/publish/publish_page.dart b/lib/views/moments/publish/index_page.dart similarity index 100% rename from lib/views/moments/publish/publish_page.dart rename to lib/views/moments/publish/index_page.dart diff --git a/pubspec.yaml b/pubspec.yaml index b3baacd..18d6595 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -60,6 +60,7 @@ dev_dependencies: flutter: uses-material-design: true assets: + - assets/backgrounds/ - assets/chats/ - assets/icons/ - assets/images/