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

230 lines
8.0 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import 'dart:typed_data';
import 'package:flutter/material.dart';
import 'package:flutter_modular/flutter_modular.dart';
import 'package:flutter_spinkit/flutter_spinkit.dart';
import 'package:image_gallery_saver/image_gallery_saver.dart';
import 'package:image_pickers/image_pickers.dart';
import 'package:toast/toast.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:share_extend/share_extend.dart';
class DetailsIndex extends StatefulWidget {
final String id;
DetailsIndex({Key key, this.id }): super(key: key);
@override
State<StatefulWidget> createState() => _DetailsIndex();
}
class _DetailsIndex extends State<DetailsIndex> {
List<String> imagePaths = [];
AgentInfo Res;
FreeUseEntity freeUseStatus;
String title = "";
bool LikeStatus = false;
@override
void initState() {
super.initState();
checkIdStatus();
Core.freeUse(context, () {
GetInfoData();
});
}
Future<AgentInfo> GetInfoData() async {
Res = await HomeService.GetInfoData(params: { 'id': widget.id });
setState(() {
imagePaths = Res.imgs;
title = Res.title;
});
}
/// 检查写真是否被收藏
Future<bool> checkIdStatus () async {
var status = await LikeService.find(int.parse(widget.id));
setState(() {
LikeStatus = status;
});
}
/// 检查是否被收藏,爱心的改变样式
Widget LikeStatusWidget () {
return
LikeStatus
? IconButton(icon: Icon(Icons.favorite, color: ColorConfig.WhiteBackColor,),iconSize: 24,)
: IconButton(
iconSize: 24,
icon: LikeStatus ? Icon(Icons.favorite_border) : Icon(Icons.favorite_border),
onPressed: () async {
if (imagePaths.isNotEmpty) {
if (Core.isVip(context)) {
var User = LikeEntity(
id: int.parse(widget.id),
preview: imagePaths[0],
source: Res.jigoulist[0].name,
title: Res.title,
totals: Res.shuliang,
user: Res.renwulist[0].name
);
int result = await LikeService.addLike(User);
if (result > 0) {
Toast.show("写真收藏成功!", context, duration: Toast.LENGTH_LONG, gravity: Toast.BOTTOM);
setState(() => LikeStatus = true);
} else {
Toast.show("写真收藏失败: ${result}", context, duration: Toast.LENGTH_LONG, gravity: Toast.BOTTOM);
}
} else {
Toast.show("您还未开通VIP无法使用【收藏图片】【收藏写真】【保存到相册】【成人视频】等功能", context, duration: Toast.LENGTH_LONG, gravity: Toast.CENTER);
}
} else {
Toast.show("请稍后收藏,数据正在加载中...", context, duration: Toast.LENGTH_LONG, gravity: Toast.BOTTOM);
}
},
);
}
/// 长按的弹出框
actionDiaLog (String url) async {
if (Core.isVip(context)) {
await showDialog(
context: context,
builder: (context) {
return SimpleDialog(
titlePadding: EdgeInsets.all(15),
contentPadding: EdgeInsets.all(15),
title: Container(
alignment: Alignment.centerLeft,
child: Row(
children: [
Icon(Icons.touch_app,size: 30,color: ColorConfig.ThemeColor,),
SizedBox(width: 5,),
Text("请选择操作",style: TextStyle(fontSize: 17),)
],
),
),
children: <Widget>[
FlatButton(
child: Text("保存到相册"),
onPressed: () {
Navigator.of(context).pop();
saveGallery(url);
}
),
FlatButton(
child: Text("收藏此图片"),
onPressed: () async {
Navigator.of(context).pop();
singleLike(url);
}
),
],
);
}
);
} else {
Toast.show("您还未开通VIP无法使用【收藏图片】【收藏写真】【保存到相册】【成人视频】等功能", context, duration: Toast.LENGTH_LONG, gravity: Toast.CENTER);
}
}
/// 保存图片到相册
saveGallery(String url) async {
// var path = await ImagePickers.saveImageToGallery(url);
// path.length != 0
// ? Toast.show("图片存储在 ${path}", context, duration: Toast.LENGTH_SHORT, gravity: Toast.BOTTOM)
// : Toast.show("保存失败", context, duration: Toast.LENGTH_SHORT, gravity: Toast.BOTTOM);
var response = await DownloadService.downImage(url: url);
String fileName = Tool.randomBit();
final result = await ImageGallerySaver.saveImage(
Uint8List.fromList(response),
quality: 100,
name: fileName
);
result['isSuccess']
? Toast.show("图片存储在 ${result['filePath']}", context, duration: Toast.LENGTH_SHORT, gravity: Toast.BOTTOM)
: Toast.show("保存失败", context, duration: Toast.LENGTH_SHORT, gravity: Toast.BOTTOM);
}
/// 分享给好友
shareImg() async {
ShareExtend.share(
"[有人@你]\n高清模特写真你要不要??\n\n写真集名称:${Res.title}\n\n写真访问地址:${Config.h5IpUrl}info.html?id=${Res.id}\n\n浏览更多高清模特写真请下载应用:【屁桃儿】",
"text",
sharePanelTitle: "111",
);
}
/// 单张图的收藏功能
singleLike(String url) async {
// false 可以收藏true 收藏过了
bool status = await LikeService.checkIsLike(url);
print("status statusstatusstatusstatus : ${status}");
if (status) {
Toast.show("此图片已经收藏过啦!!", context, duration: Toast.LENGTH_LONG, gravity: Toast.BOTTOM);
} else {
var add = SingleGraphEntity(
id: int.parse(widget.id) + int.parse(Tool.randomBit()),
src: url
);
int result = await LikeService.addImg(add);
if (result > 0) {
Toast.show("图片收藏成功!", context, duration: Toast.LENGTH_LONG, gravity: Toast.BOTTOM);
} else {
Toast.show("图片收藏失败!", context, duration: Toast.LENGTH_LONG, gravity: Toast.BOTTOM);
}
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(title),
backgroundColor: ColorConfig.ThemeColor,
elevation: 0,
actions: [
LikeStatusWidget(),
IconButton(
icon: Icon(Icons.share_outlined,color: ColorConfig.WhiteBackColor,),iconSize: 24,
onPressed: () {
shareImg();
},
)
],
),
body: imagePaths.isEmpty
? SpinKitWave(color: ColorConfig.ThemeColor, itemCount: 3, size: 40)
: ListView.builder(
itemCount: imagePaths.length,
cacheExtent: double.maxFinite,
itemBuilder: (BuildContext context, int index) {
return InkWell(
onLongPress: () => actionDiaLog(imagePaths[index]),
onTap: () async {
ImagePickers.previewImages(imagePaths,index);
// Navigator.of(context).push(new MaterialPageRoute(builder: (_) {
// return PhotoViewGalleryScreen(
// images: imagePaths,
// index: index,
// title: Res.title,
// time: Res.shijian,
// heroTag: index.toString(),
// );
// }));
},
child: CachedNetworkImg(imagePaths[index]),
);
},
)
);
}
}