opt: image save dialog

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2024-12-29 15:04:03 +08:00
parent bdd927e7e3
commit 85733e071b
3 changed files with 25 additions and 14 deletions

View File

@@ -1,19 +1,22 @@
import 'dart:math';
import 'package:PiliPalaX/common/constants.dart';
import 'package:PiliPalaX/common/widgets/network_img_layer.dart';
import 'package:PiliPalaX/utils/download.dart';
import 'package:flutter/material.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart';
void imageSaveDialog({
required BuildContext context,
required String? title,
required String? cover,
}) {
final double imgWidth =
MediaQuery.sizeOf(context).width - StyleString.safeSpace * 2;
final double imgWidth = min(Get.width, Get.height) - 8 * 2;
SmartDialog.show(
animationType: SmartAnimationType.centerScale_otherSlide,
builder: (context) => Container(
width: imgWidth,
margin: const EdgeInsets.symmetric(horizontal: StyleString.safeSpace),
decoration: BoxDecoration(
color: Theme.of(context).colorScheme.surface,
@@ -21,15 +24,17 @@ void imageSaveDialog({
),
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Stack(
children: [
NetworkImgLayer(
width: imgWidth,
height: imgWidth / StyleString.aspectRatio,
src: cover,
quality: 100,
GestureDetector(
onTap: SmartDialog.dismiss,
child: NetworkImgLayer(
width: imgWidth,
height: imgWidth / StyleString.aspectRatio,
src: cover,
quality: 100,
),
),
Positioned(
right: 8,
@@ -38,9 +43,9 @@ void imageSaveDialog({
width: 30,
height: 30,
decoration: BoxDecoration(
color: Colors.black.withOpacity(0.3),
borderRadius:
const BorderRadius.all(Radius.circular(20))),
color: Colors.black.withOpacity(0.3),
shape: BoxShape.circle,
),
child: IconButton(
style: ButtonStyle(
padding: WidgetStateProperty.all(EdgeInsets.zero),

View File

@@ -112,8 +112,8 @@ class GrpcRepo {
e.details?.firstOrNull?.getFieldOrNull(2),
allowMalformed: true,
);
msg = msg.replaceAll(
RegExp(r"[^a-zA-Z0-9\u4e00-\u9fa5,.;!?,。;!?]"), '');
msg =
msg.replaceAll(RegExp(r"[^a-zA-Z0-9\u4e00-\u9fa5,.;?,。;!?]"), '');
if (msg.isNotEmpty) {
return {'status': false, 'msg': msg};
} else {

View File

@@ -1,3 +1,4 @@
import 'package:PiliPalaX/common/widgets/image_save.dart';
import 'package:PiliPalaX/utils/utils.dart';
import 'package:flutter/material.dart';
import 'package:PiliPalaX/common/constants.dart';
@@ -18,8 +19,13 @@ class FavItem extends StatelessWidget {
Widget build(BuildContext context) {
return InkWell(
onTap: onTap,
onLongPress: () => imageSaveDialog(
context: context,
title: favFolderItem.title,
cover: favFolderItem.cover,
),
child: Padding(
padding: const EdgeInsets.fromLTRB(12, 7, 12, 7),
padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 5),
child: LayoutBuilder(
builder: (context, boxConstraints) {
double width =