mirror of
https://github.com/HChaZZY/PiliPlus.git
synced 2025-12-25 03:26:22 +08:00
feat: pm: share video
Closes #693 Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
@@ -4,28 +4,17 @@ import 'package:PiliPlus/http/video.dart';
|
||||
import 'package:PiliPlus/models/fans/result.dart';
|
||||
import 'package:PiliPlus/pages/common/common_list_controller.dart';
|
||||
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:PiliPlus/utils/storage.dart';
|
||||
|
||||
class FansController
|
||||
extends CommonListController<FansDataModel, FansItemModel> {
|
||||
FansController(this.mid);
|
||||
int ps = 20;
|
||||
int total = 0;
|
||||
late int? mid;
|
||||
late String? name;
|
||||
dynamic userInfo;
|
||||
late bool isOwner = false;
|
||||
int mid;
|
||||
|
||||
@override
|
||||
void onInit() {
|
||||
super.onInit();
|
||||
userInfo = GStorage.userInfo.get('userInfoCache');
|
||||
mid = Get.parameters['mid'] != null
|
||||
? int.parse(Get.parameters['mid']!)
|
||||
: userInfo?.mid;
|
||||
isOwner = mid == userInfo?.mid;
|
||||
name = Get.parameters['name'] ?? userInfo?.uname;
|
||||
|
||||
queryData();
|
||||
}
|
||||
|
||||
|
||||
@@ -4,6 +4,8 @@ import 'package:PiliPlus/common/widgets/network_img_layer.dart';
|
||||
import 'package:PiliPlus/common/widgets/refresh_indicator.dart';
|
||||
import 'package:PiliPlus/http/loading_state.dart';
|
||||
import 'package:PiliPlus/models/fans/result.dart';
|
||||
import 'package:PiliPlus/pages/video/detail/share/view.dart' show UserModel;
|
||||
import 'package:PiliPlus/utils/storage.dart';
|
||||
import 'package:PiliPlus/utils/utils.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
@@ -13,31 +15,44 @@ import '../../utils/grid.dart';
|
||||
import 'controller.dart';
|
||||
|
||||
class FansPage extends StatefulWidget {
|
||||
const FansPage({super.key});
|
||||
const FansPage({
|
||||
super.key,
|
||||
this.mid,
|
||||
this.onSelect,
|
||||
});
|
||||
|
||||
final int? mid;
|
||||
final ValueChanged<UserModel>? onSelect;
|
||||
|
||||
@override
|
||||
State<FansPage> createState() => _FansPageState();
|
||||
}
|
||||
|
||||
class _FansPageState extends State<FansPage> {
|
||||
late String mid;
|
||||
late int mid;
|
||||
String? name;
|
||||
late bool isOwner;
|
||||
late FansController _fansController;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
mid = Get.parameters['mid']!;
|
||||
_fansController = Get.put(FansController(), tag: Utils.makeHeroTag(mid));
|
||||
final userInfo = GStorage.userInfo.get('userInfoCache');
|
||||
mid = widget.mid ??
|
||||
(Get.parameters['mid'] != null
|
||||
? int.parse(Get.parameters['mid']!)
|
||||
: userInfo?.mid);
|
||||
isOwner = mid == userInfo?.mid;
|
||||
name = Get.parameters['name'] ?? userInfo?.uname;
|
||||
_fansController = Get.put(FansController(mid), tag: Utils.makeHeroTag(mid));
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
title: Text(
|
||||
_fansController.isOwner ? '我的粉丝' : '${_fansController.name}的粉丝',
|
||||
),
|
||||
),
|
||||
appBar: widget.onSelect != null
|
||||
? null
|
||||
: AppBar(title: Text(isOwner ? '我的粉丝' : '$name的粉丝')),
|
||||
body: SafeArea(
|
||||
bottom: false,
|
||||
child: refreshIndicator(
|
||||
@@ -86,22 +101,33 @@ class _FansPageState extends State<FansPage> {
|
||||
String heroTag = Utils.makeHeroTag(item.mid);
|
||||
return ListTile(
|
||||
onTap: () {
|
||||
if (widget.onSelect != null) {
|
||||
widget.onSelect!(UserModel(
|
||||
mid: item.mid!,
|
||||
name: item.uname!,
|
||||
avatar: item.face!,
|
||||
));
|
||||
return;
|
||||
}
|
||||
Get.toNamed(
|
||||
'/member?mid=${item.mid}',
|
||||
arguments: {'face': item.face, 'heroTag': heroTag},
|
||||
);
|
||||
},
|
||||
onLongPress: _fansController.isOwner
|
||||
? () {
|
||||
showConfirmDialog(
|
||||
context: context,
|
||||
title: '确定移除 ${item.uname} ?',
|
||||
onConfirm: () {
|
||||
_fansController.onRemoveFan(index, item.mid!);
|
||||
},
|
||||
);
|
||||
}
|
||||
: null,
|
||||
onLongPress: widget.onSelect != null
|
||||
? null
|
||||
: isOwner
|
||||
? () {
|
||||
showConfirmDialog(
|
||||
context: context,
|
||||
title: '确定移除 ${item.uname} ?',
|
||||
onConfirm: () {
|
||||
_fansController.onRemoveFan(
|
||||
index, item.mid!);
|
||||
},
|
||||
);
|
||||
}
|
||||
: null,
|
||||
leading: Hero(
|
||||
tag: heroTag,
|
||||
child: NetworkImgLayer(
|
||||
|
||||
Reference in New Issue
Block a user