动态发布
This commit is contained in:
BIN
assets/backgrounds/moment_1.jpg
Normal file
BIN
assets/backgrounds/moment_1.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 153 KiB |
BIN
assets/backgrounds/moment_2.jpg
Normal file
BIN
assets/backgrounds/moment_2.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 310 KiB |
BIN
assets/backgrounds/moment_3.jpg
Normal file
BIN
assets/backgrounds/moment_3.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 165 KiB |
BIN
assets/backgrounds/moment_4.jpg
Normal file
BIN
assets/backgrounds/moment_4.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 131 KiB |
@@ -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,
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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';
|
||||||
|
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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/
|
||||||
|
|||||||
Reference in New Issue
Block a user