| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- import 'package:flutter/services.dart';
- import 'package:get/get.dart';
- import 'package:image_gallery_saver_plus/image_gallery_saver_plus.dart';
- import 'package:screenshot/screenshot.dart';
- import '../../../../config/translations/strings_enum.dart';
- import '../../../../utils/device_manager.dart';
- import '../../../components/ix_snackbar.dart';
- import '../../../routes/app_pages.dart';
- import '../widgets/precode_save_dialog.dart';
- class PrecodeController extends GetxController {
- // Pre Code 数据
- final preCode = '673 888 888 999'.obs;
- // 是否显示完整代码
- final isPreviewMode = false.obs;
- // 截图控制器
- final screenshotController = ScreenshotController();
- // UID
- String get uid => DeviceManager.getCacheDeviceId();
- // 是否是Premium用户
- final isPremium = true.obs;
- // 切换预览模式
- void togglePreview() {
- isPreviewMode.value = !isPreviewMode.value;
- }
- // 获取显示的代码(隐藏或完整)
- String get displayCode {
- if (isPreviewMode.value) {
- return preCode.value;
- } else {
- // 隐藏中间部分,只显示前3位和后3位
- final parts = preCode.value.split(' ');
- if (parts.length >= 3) {
- return '${parts[0]} ****** ${parts[parts.length - 1]}';
- }
- return preCode.value;
- }
- }
- // 复制代码
- void copyCode() {
- Clipboard.setData(ClipboardData(text: preCode.value));
- IXSnackBar.showIXSnackBar(
- title: Strings.copied.tr,
- message: Strings.copied.tr,
- );
- }
- // 发送到邮箱
- void sendToEmail() {
- Get.toNamed(Routes.PRECODE_SENDEMAIL);
- }
- // 保存本地副本 - 显示弹窗
- void saveLocalCopy() {
- Get.bottomSheet(
- PrecodeSaveDialog(controller: this),
- isScrollControlled: true,
- );
- }
- // 保存截图到相册
- Future<void> saveToGallery() async {
- try {
- // 截图
- final imageBytes = await screenshotController.capture();
- if (imageBytes == null) {
- IXSnackBar.showIXSnackBar(
- title: 'Error',
- message: 'Failed to capture screenshot',
- );
- return;
- }
- // 保存到相册
- final result = await ImageGallerySaverPlus.saveImage(
- imageBytes,
- quality: 100,
- name: 'nomo_precode_${DateTime.now().millisecondsSinceEpoch}',
- );
- if (result['isSuccess'] == true) {
- // 显示成功提示
- IXSnackBar.showIXSnackBar(
- title: "",
- message: "The image has been saved to your local album",
- );
- } else {
- IXSnackBar.showIXErrorSnackBar(
- title: 'Error',
- message: 'Failed to save image to gallery',
- );
- }
- } catch (e) {
- IXSnackBar.showIXErrorSnackBar(
- title: 'Error',
- message: 'Failed to save: $e',
- );
- }
- }
- }
|