mirror of
https://github.com/HChaZZY/PiliPlus.git
synced 2025-12-17 07:36:14 +08:00
opt: image save dialog
Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
@@ -1,19 +1,22 @@
|
|||||||
|
import 'dart:math';
|
||||||
|
|
||||||
import 'package:PiliPalaX/common/constants.dart';
|
import 'package:PiliPalaX/common/constants.dart';
|
||||||
import 'package:PiliPalaX/common/widgets/network_img_layer.dart';
|
import 'package:PiliPalaX/common/widgets/network_img_layer.dart';
|
||||||
import 'package:PiliPalaX/utils/download.dart';
|
import 'package:PiliPalaX/utils/download.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
|
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
|
||||||
|
import 'package:get/get.dart';
|
||||||
|
|
||||||
void imageSaveDialog({
|
void imageSaveDialog({
|
||||||
required BuildContext context,
|
required BuildContext context,
|
||||||
required String? title,
|
required String? title,
|
||||||
required String? cover,
|
required String? cover,
|
||||||
}) {
|
}) {
|
||||||
final double imgWidth =
|
final double imgWidth = min(Get.width, Get.height) - 8 * 2;
|
||||||
MediaQuery.sizeOf(context).width - StyleString.safeSpace * 2;
|
|
||||||
SmartDialog.show(
|
SmartDialog.show(
|
||||||
animationType: SmartAnimationType.centerScale_otherSlide,
|
animationType: SmartAnimationType.centerScale_otherSlide,
|
||||||
builder: (context) => Container(
|
builder: (context) => Container(
|
||||||
|
width: imgWidth,
|
||||||
margin: const EdgeInsets.symmetric(horizontal: StyleString.safeSpace),
|
margin: const EdgeInsets.symmetric(horizontal: StyleString.safeSpace),
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
color: Theme.of(context).colorScheme.surface,
|
color: Theme.of(context).colorScheme.surface,
|
||||||
@@ -21,16 +24,18 @@ void imageSaveDialog({
|
|||||||
),
|
),
|
||||||
child: Column(
|
child: Column(
|
||||||
mainAxisSize: MainAxisSize.min,
|
mainAxisSize: MainAxisSize.min,
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
|
||||||
children: [
|
children: [
|
||||||
Stack(
|
Stack(
|
||||||
children: [
|
children: [
|
||||||
NetworkImgLayer(
|
GestureDetector(
|
||||||
|
onTap: SmartDialog.dismiss,
|
||||||
|
child: NetworkImgLayer(
|
||||||
width: imgWidth,
|
width: imgWidth,
|
||||||
height: imgWidth / StyleString.aspectRatio,
|
height: imgWidth / StyleString.aspectRatio,
|
||||||
src: cover,
|
src: cover,
|
||||||
quality: 100,
|
quality: 100,
|
||||||
),
|
),
|
||||||
|
),
|
||||||
Positioned(
|
Positioned(
|
||||||
right: 8,
|
right: 8,
|
||||||
top: 8,
|
top: 8,
|
||||||
@@ -39,8 +44,8 @@ void imageSaveDialog({
|
|||||||
height: 30,
|
height: 30,
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
color: Colors.black.withOpacity(0.3),
|
color: Colors.black.withOpacity(0.3),
|
||||||
borderRadius:
|
shape: BoxShape.circle,
|
||||||
const BorderRadius.all(Radius.circular(20))),
|
),
|
||||||
child: IconButton(
|
child: IconButton(
|
||||||
style: ButtonStyle(
|
style: ButtonStyle(
|
||||||
padding: WidgetStateProperty.all(EdgeInsets.zero),
|
padding: WidgetStateProperty.all(EdgeInsets.zero),
|
||||||
|
|||||||
@@ -112,8 +112,8 @@ class GrpcRepo {
|
|||||||
e.details?.firstOrNull?.getFieldOrNull(2),
|
e.details?.firstOrNull?.getFieldOrNull(2),
|
||||||
allowMalformed: true,
|
allowMalformed: true,
|
||||||
);
|
);
|
||||||
msg = msg.replaceAll(
|
msg =
|
||||||
RegExp(r"[^a-zA-Z0-9\u4e00-\u9fa5,.;!?,。;!?]"), '');
|
msg.replaceAll(RegExp(r"[^a-zA-Z0-9\u4e00-\u9fa5,.;?,。;!?]"), '');
|
||||||
if (msg.isNotEmpty) {
|
if (msg.isNotEmpty) {
|
||||||
return {'status': false, 'msg': msg};
|
return {'status': false, 'msg': msg};
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import 'package:PiliPalaX/common/widgets/image_save.dart';
|
||||||
import 'package:PiliPalaX/utils/utils.dart';
|
import 'package:PiliPalaX/utils/utils.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:PiliPalaX/common/constants.dart';
|
import 'package:PiliPalaX/common/constants.dart';
|
||||||
@@ -18,8 +19,13 @@ class FavItem extends StatelessWidget {
|
|||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return InkWell(
|
return InkWell(
|
||||||
onTap: onTap,
|
onTap: onTap,
|
||||||
|
onLongPress: () => imageSaveDialog(
|
||||||
|
context: context,
|
||||||
|
title: favFolderItem.title,
|
||||||
|
cover: favFolderItem.cover,
|
||||||
|
),
|
||||||
child: Padding(
|
child: Padding(
|
||||||
padding: const EdgeInsets.fromLTRB(12, 7, 12, 7),
|
padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 5),
|
||||||
child: LayoutBuilder(
|
child: LayoutBuilder(
|
||||||
builder: (context, boxConstraints) {
|
builder: (context, boxConstraints) {
|
||||||
double width =
|
double width =
|
||||||
|
|||||||
Reference in New Issue
Block a user