mirror of
https://github.com/HChaZZY/PiliPlus.git
synced 2025-12-06 09:13:48 +08:00
opt: multi select
Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
@@ -27,7 +27,7 @@ class HotVideoItemModel {
|
||||
this.seasontype,
|
||||
this.isOgv,
|
||||
this.rcmdReason,
|
||||
required this.checked,
|
||||
this.checked,
|
||||
this.pgcLabel,
|
||||
this.redirectUrl,
|
||||
});
|
||||
@@ -57,7 +57,7 @@ class HotVideoItemModel {
|
||||
int? seasontype;
|
||||
bool? isOgv;
|
||||
RcmdReason? rcmdReason;
|
||||
late bool checked;
|
||||
bool? checked;
|
||||
String? pgcLabel;
|
||||
String? redirectUrl;
|
||||
|
||||
@@ -89,7 +89,6 @@ class HotVideoItemModel {
|
||||
rcmdReason = json['rcmd_reason'] != '' && json['rcmd_reason'] != null
|
||||
? RcmdReason.fromJson(json['rcmd_reason'])
|
||||
: null;
|
||||
checked = false;
|
||||
pgcLabel = json['pgc_label'];
|
||||
redirectUrl = json['redirect_url'];
|
||||
}
|
||||
|
||||
@@ -47,7 +47,7 @@ class FavDetailItemData {
|
||||
this.stat,
|
||||
this.cid,
|
||||
this.epId,
|
||||
required this.checked,
|
||||
this.checked,
|
||||
});
|
||||
|
||||
int? id;
|
||||
@@ -70,7 +70,7 @@ class FavDetailItemData {
|
||||
Stat? stat;
|
||||
int? cid;
|
||||
String? epId;
|
||||
late bool checked;
|
||||
bool? checked;
|
||||
|
||||
FavDetailItemData.fromJson(Map<String, dynamic> json) {
|
||||
id = json['id'];
|
||||
@@ -95,7 +95,6 @@ class FavDetailItemData {
|
||||
if (json['link'] != null && json['link'].contains('/bangumi')) {
|
||||
epId = resolveEpId(json['link']);
|
||||
}
|
||||
checked = false;
|
||||
}
|
||||
|
||||
String resolveEpId(url) {
|
||||
|
||||
@@ -85,7 +85,7 @@ class HisListItem {
|
||||
this.kid,
|
||||
this.tagName,
|
||||
this.liveStatus,
|
||||
required this.checked,
|
||||
this.checked,
|
||||
});
|
||||
|
||||
String? title;
|
||||
@@ -112,7 +112,7 @@ class HisListItem {
|
||||
int? kid;
|
||||
String? tagName;
|
||||
int? liveStatus;
|
||||
late bool checked;
|
||||
bool? checked;
|
||||
void isFullScreen;
|
||||
|
||||
HisListItem.fromJson(Map<String, dynamic> json) {
|
||||
@@ -140,7 +140,6 @@ class HisListItem {
|
||||
kid = json['kid'];
|
||||
tagName = json['tag_name'];
|
||||
liveStatus = json['live_status'];
|
||||
checked = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -9,8 +9,8 @@ abstract class MultiSelectController extends CommonController {
|
||||
|
||||
onSelect(int index) {
|
||||
List list = (loadingState.value as Success).response;
|
||||
list[index].checked = !list[index].checked;
|
||||
checkedCount.value = list.where((item) => item.checked).length;
|
||||
list[index].checked = !(list[index]?.checked ?? false);
|
||||
checkedCount.value = list.where((item) => item.checked == true).length;
|
||||
loadingState.value = LoadingState.success(list);
|
||||
if (checkedCount.value == 0) {
|
||||
enableMultiSelect.value = false;
|
||||
|
||||
@@ -97,7 +97,7 @@ class FavDetailController extends MultiSelectController {
|
||||
onPressed: () async {
|
||||
Get.back();
|
||||
List list = ((loadingState.value as Success).response as List)
|
||||
.where((e) => e.checked)
|
||||
.where((e) => e.checked == true)
|
||||
.toList();
|
||||
dynamic result = await VideoHttp.delFav(
|
||||
ids: list.map((item) => '${item.id}:${item.type}').toList(),
|
||||
|
||||
@@ -365,7 +365,8 @@ class _FavDetailPageState extends State<FavDetailPage> {
|
||||
child: LayoutBuilder(
|
||||
builder: (context, constraints) =>
|
||||
AnimatedOpacity(
|
||||
opacity: loadingState.response[index].checked
|
||||
opacity:
|
||||
loadingState.response[index].checked == true
|
||||
? 1
|
||||
: 0,
|
||||
duration: const Duration(milliseconds: 200),
|
||||
@@ -382,8 +383,9 @@ class _FavDetailPageState extends State<FavDetailPage> {
|
||||
width: 34,
|
||||
height: 34,
|
||||
child: AnimatedScale(
|
||||
scale:
|
||||
loadingState.response[index].checked
|
||||
scale: loadingState
|
||||
.response[index].checked ==
|
||||
true
|
||||
? 1
|
||||
: 0,
|
||||
duration:
|
||||
|
||||
@@ -181,7 +181,7 @@ class HistoryController extends MultiSelectController {
|
||||
Get.back();
|
||||
if (loadingState.value is Success) {
|
||||
_onDelete(((loadingState.value as Success).response as List)
|
||||
.where((e) => e.checked)
|
||||
.where((e) => e.checked == true)
|
||||
.toList());
|
||||
}
|
||||
},
|
||||
|
||||
@@ -226,7 +226,7 @@ class HistoryItem extends StatelessWidget {
|
||||
),
|
||||
Positioned.fill(
|
||||
child: AnimatedOpacity(
|
||||
opacity: videoItem.checked ? 1 : 0,
|
||||
opacity: videoItem.checked == true ? 1 : 0,
|
||||
duration: const Duration(milliseconds: 200),
|
||||
child: Container(
|
||||
alignment: Alignment.center,
|
||||
@@ -238,7 +238,7 @@ class HistoryItem extends StatelessWidget {
|
||||
width: 34,
|
||||
height: 34,
|
||||
child: AnimatedScale(
|
||||
scale: videoItem.checked ? 1 : 0,
|
||||
scale: videoItem.checked == true ? 1 : 0,
|
||||
duration: const Duration(milliseconds: 250),
|
||||
curve: Curves.easeInOut,
|
||||
child: IconButton(
|
||||
|
||||
@@ -135,7 +135,7 @@ class LaterController extends MultiSelectController {
|
||||
onPressed: () async {
|
||||
Get.back();
|
||||
_onDelete(((loadingState.value as Success).response as List)
|
||||
.where((e) => e.checked)
|
||||
.where((e) => e.checked == true)
|
||||
.toList());
|
||||
},
|
||||
child: const Text('确认'),
|
||||
|
||||
@@ -172,7 +172,7 @@ class _LaterPageState extends State<LaterPage> {
|
||||
child: IgnorePointer(
|
||||
child: LayoutBuilder(
|
||||
builder: (context, constraints) => AnimatedOpacity(
|
||||
opacity: videoItem.checked ? 1 : 0,
|
||||
opacity: videoItem.checked == true ? 1 : 0,
|
||||
duration: const Duration(milliseconds: 200),
|
||||
child: Container(
|
||||
alignment: Alignment.center,
|
||||
@@ -187,7 +187,7 @@ class _LaterPageState extends State<LaterPage> {
|
||||
width: 34,
|
||||
height: 34,
|
||||
child: AnimatedScale(
|
||||
scale: videoItem.checked ? 1 : 0,
|
||||
scale: videoItem.checked == true ? 1 : 0,
|
||||
duration: const Duration(milliseconds: 250),
|
||||
curve: Curves.easeInOut,
|
||||
child: IconButton(
|
||||
|
||||
Reference in New Issue
Block a user