Files
pte/untitled/lib/views/Me/Like.dart
2024-09-27 01:31:25 +08:00

223 lines
8.2 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter_modular/flutter_modular.dart';
import 'package:peach/config/_.dart';
import 'package:peach/entity/_.dart';
import 'package:peach/service/_.dart';
import 'package:peach/utils/_.dart';
import 'package:peach/widget/_.dart';
import 'package:flutter_slidable/flutter_slidable.dart';
class Like extends StatefulWidget {
@override
State<StatefulWidget> createState() => _Like();
}
class _Like extends State<Like> {
List<LikeEntity> LikeList = [];
String initialValue = "default";
final SlidableController slidableController = SlidableController();
@override
void initState() {
getLikeList();
}
/// TODO 解决思路,再存数据的时候使用 HomeEntityData
void getLikeList() async {
var likeData = await LikeService.findAll();
setState(() => LikeList = likeData);
}
Future<void> deleteAlertDialog(int id) async {
await Core.deleteDialog(context, () async {
await LikeService.delete(id);
getLikeList();
});
}
Widget UseLayout() {
if (LikeList.isNotEmpty) {
switch(initialValue) {
case 'default':
return OldItemWidget(
data: LikeList,
longPress: (int id) {
deleteAlertDialog(id);
},
);
break;
case 'column':
return Container(
padding: EdgeInsets.only(left: 10,right: 10, top: 5),
alignment: Alignment.centerLeft,
child: ListView.builder(
shrinkWrap: true,
itemCount: LikeList.length,
physics: BouncingScrollPhysics(),
itemBuilder: (BuildContext contenx,int index) {
return Slidable(
key: Key(index.toString()),
controller: slidableController,
actionPane: SlidableDrawerActionPane(),
actionExtentRatio: 0.25,
child: InkWell(
onLongPress: () => deleteAlertDialog(LikeList[index].id),
onTap: () => Modular.to.pushNamed("/details/${LikeList[index].id}"),
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Image.network(
LikeList[index].preview,
width: Screen.setWidth(120),
height: Screen.setHeight(80),
),
SizedBox(width: 10,),
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
SizedBox(height: 5,),
Text(LikeList[index].title, style: TextStyle(color: ColorConfig.TitleColor,fontSize: 15),),
Container(
margin: EdgeInsets.only(top: 10),
child: Wrap(
children: [
Container(margin: EdgeInsets.only(right: 5),child: Text("模特:${LikeList[index].user}",style: TextStyle(color: ColorConfig.TextColor,fontSize: 13)),),
Container(margin: EdgeInsets.only(right: 5),child: Text("来源:${LikeList[index].source}",style: TextStyle(color: ColorConfig.TextColor,fontSize: 13)),),
Container(margin: EdgeInsets.only(right: 5),child: Text("图片:${LikeList[index].totals}P",style: TextStyle(color: ColorConfig.TextColor,fontSize: 13)),),
],
),
)
],
),
)
],
),
),
secondaryActions: [//右侧按钮列表
IconSlideAction(
caption: '删除',
color: ColorConfig.ThemeColor,
foregroundColor: ColorConfig.WhiteBackColor,
icon: Icons.delete,
closeOnTap: false,
onTap: () {
Slidable.of(context)?.close();
deleteAlertDialog(LikeList[index].id);
},
),
],
);
}
),
);
break;
case 'big':
return Container(
alignment: Alignment.centerLeft,
child: ListView.builder(
shrinkWrap: true,
itemCount: LikeList.length,
physics: BouncingScrollPhysics(),
itemBuilder: (BuildContext contenx,int index) {
return InkWell(
onLongPress: () => deleteAlertDialog(LikeList[index].id),
onTap: () => Modular.to.pushNamed("/details/${LikeList[index].id}"),
child: Column(
children: [
Image.network(
LikeList[index].preview,
width: MediaQuery.of(context).size.width,
fit: BoxFit.cover,
),
],
),
);
},
),
);
break;
}
} else {
return Container(
height: Screen.setHeight(300),
alignment: Alignment.center,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Icon(Icons.error_outline_outlined,size: 50,color: ColorConfig.ThemeColor,),
SizedBox(height: 10,),
Text("暂无收藏", style: TextStyle(color: ColorConfig.TextColor))
],
),
);
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: ColorConfig.ThemeColor,
title: Text("我的收藏"),
actions: [
Row(
children: [
Text(initialValue == "default" ? '默认布局' : initialValue == "column" ? "多列布局" : "大图布局"),
new PopupMenuButton(
initialValue: initialValue,
itemBuilder: (BuildContext context) => <PopupMenuItem<String>>[
PopupMenuItem(
value: 'default',
child: new Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[
new Icon(Icons.grid_view, color: ColorConfig.ThemeColor),
new Text("默认布局"),
],
)
),
PopupMenuItem(
value: 'column',
child: new Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[
new Icon(Icons.table_rows_outlined, color: ColorConfig.ThemeColor),
new Text("多列布局"),
],
)
),
PopupMenuItem(
value: 'big',
child: new Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[
new Icon(Icons.image_outlined, color: ColorConfig.ThemeColor),
new Text("大图模式"),
],
)
)
],
onSelected: (String action) {
print("action ===== ${action}");
setState(() {
initialValue = action;
});
},
)
],
)
],
),
body: SingleChildScrollView(
scrollDirection: Axis.vertical,
physics: BouncingScrollPhysics(),
child: UseLayout(),
)
);
}
}