opt: follow dialog

This commit is contained in:
bggRGjQaUbCoE
2024-10-18 11:08:07 +08:00
parent 87326e825d
commit 122328c18e
7 changed files with 210 additions and 152 deletions

View File

@@ -507,132 +507,15 @@ class VideoIntroController extends GetxController
SmartDialog.showToast('账号未登录');
return;
}
if (videoDetail.value.owner?.mid == null) {
return;
}
feedBack();
int mid = videoDetail.value.owner!.mid!;
if ((followStatus['attribute'] ?? 0) == 0) {
var res = await VideoHttp.relationMod(
mid: mid,
act: 1,
reSrc: 11,
);
SmartDialog.showToast(res['status'] ? "关注成功" : res['msg']);
if (res['status']) {
followStatus['attribute'] = 2;
Utils.actionRelationMod(
context: context,
mid: videoDetail.value.owner?.mid,
isFollow: (followStatus['attribute'] ?? 0) != 0,
callback: (attribute) {
followStatus['attribute'] = attribute;
followStatus.refresh();
}
} else {
/// TODO
showDialog(
context: context,
builder: (_) {
bool isSpecialFollowed = followStatus['special'] == 1;
String text = isSpecialFollowed ? '移除特别关注' : '加入特别关注';
return AlertDialog(
clipBehavior: Clip.hardEdge,
contentPadding: const EdgeInsets.symmetric(vertical: 12),
content: Column(
mainAxisSize: MainAxisSize.min,
children: [
ListTile(
dense: true,
onTap: () async {
Get.back();
final res = await MemberHttp.specialAction(
fid: mid,
isAdd: !isSpecialFollowed,
);
if (res['status']) {
followStatus['special'] = isSpecialFollowed ? 0 : 1;
List tags = followStatus['tag'] ?? [];
if (isSpecialFollowed) {
tags.remove(-10);
} else {
tags.add(-10);
}
followStatus['tag'] = tags;
followStatus.refresh();
SmartDialog.showToast('$text成功');
} else {
SmartDialog.showToast(res['msg']);
}
},
title: Text(
text,
style: TextStyle(fontSize: 14),
),
),
ListTile(
dense: true,
onTap: () async {
Get.back();
dynamic result = await showModalBottomSheet(
context: context,
useSafeArea: true,
isScrollControlled: true,
transitionAnimationController: AnimationController(
duration: const Duration(milliseconds: 200),
vsync: this,
),
sheetAnimationStyle: AnimationStyle(curve: Curves.ease),
builder: (BuildContext context) {
return DraggableScrollableSheet(
minChildSize: 0,
maxChildSize: 1,
initialChildSize: 0.6,
snap: true,
expand: false,
snapSizes: const [0.6],
builder: (BuildContext context,
ScrollController scrollController) {
return GroupPanel(
mid: mid,
tags: followStatus['tag'],
scrollController: scrollController,
);
},
);
},
);
await Future.delayed(const Duration(milliseconds: 500));
if (result == true) {
queryFollowStatus();
}
},
title: const Text(
'设置分组',
style: TextStyle(fontSize: 14),
),
),
ListTile(
dense: true,
onTap: () async {
Get.back();
var res = await VideoHttp.relationMod(
mid: mid,
act: 2,
reSrc: 11,
);
SmartDialog.showToast(
res['status'] ? "取消关注成功" : res['msg']);
if (res['status']) {
followStatus['attribute'] = 0;
followStatus.refresh();
}
},
title: const Text(
'取消关注',
style: TextStyle(fontSize: 14),
),
),
],
),
);
},
);
}
},
);
// MemberController _ = Get.put<MemberController>(MemberController(mid: mid),
// tag: mid.toString());

View File

@@ -102,19 +102,22 @@ class _FavPanelState extends State<FavPanel> {
1,
index),
dense: true,
leading: [0, 22].contains(widget.ctr!
.favFolderData.value.list![index].attr)
? const Icon(Icons.folder_outlined)
: const Icon(Icons.lock_outline),
leading: const Icon(Icons.folder_outlined),
// leading: [0, 22].contains(widget.ctr!
// .favFolderData.value.list![index].attr)
// ? const Icon(Icons.folder_outlined)
// : const Icon(Icons.lock_outline),
minLeadingWidth: 0,
title: Text(widget.ctr!.favFolderData.value
.list![index].title!),
subtitle: Text(
'${widget.ctr!.favFolderData.value.list![index].mediaCount}个内容 . ${[
0,
22
].contains(widget.ctr!.favFolderData.value.list![index].attr) ? '公开' : '私密'}',
),
'${widget.ctr!.favFolderData.value.list![index].mediaCount}个内容'),
// subtitle: Text(
// '${widget.ctr!.favFolderData.value.list![index].mediaCount}个内容 . ${[
// 0,
// 22
// ].contains(widget.ctr!.favFolderData.value.list![index].attr) ? '公开' : '私密'}',
// ),
trailing: Transform.scale(
scale: 0.9,
child: Checkbox(