补充
This commit is contained in:
@@ -3,8 +3,8 @@
|
||||
/// 创建时间: 2026-06-04
|
||||
/// 更新时间: 2026-06-17
|
||||
/// 作用: 解决鸿蒙端的已知兼容性问题
|
||||
/// 上次更新: 新增saveVideoToGalleryCompat视频保存兼容方法,
|
||||
/// 修复鸿蒙端gal插件不可用导致的相册保存失败
|
||||
/// 上次更新: saveImageToGalleryCompat/saveVideoToGalleryCompat非鸿蒙端改为调用Gal原生保存,
|
||||
/// 使方法成为真正的跨平台兼容方法,消除调用方必须预判断平台的隐患
|
||||
/// ============================================================
|
||||
|
||||
import 'dart:io';
|
||||
@@ -12,6 +12,7 @@ import 'dart:io';
|
||||
import 'package:flutter/foundation.dart' show kIsWeb;
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:gal/gal.dart';
|
||||
import 'package:path_provider/path_provider.dart';
|
||||
import 'package:share_plus/share_plus.dart';
|
||||
|
||||
@@ -197,11 +198,26 @@ class OhosCompatibilityHelper {
|
||||
// 图片保存兼容 (任务A2 - 日签卡片保存按钮)
|
||||
// ============================================================
|
||||
|
||||
/// OHOS平台兼容的图片保存方法
|
||||
/// gal插件不支持OHOS,使用系统分享作为替代方案
|
||||
/// 跨平台兼容的图片保存方法
|
||||
///
|
||||
/// - 鸿蒙端:gal插件不支持,使用系统分享作为替代方案
|
||||
/// - 非鸿蒙端(iOS/Android/macOS):调用 gal 原生保存到相册
|
||||
/// - Web端:返回 false(不支持)
|
||||
///
|
||||
/// 调用方无需预判断平台,方法内部统一分发。
|
||||
static Future<bool> saveImageToGalleryCompat(Uint8List imageBytes) async {
|
||||
if (kIsWeb) return false;
|
||||
if (!isOhos) return false;
|
||||
|
||||
// 非鸿蒙端:调用 gal 原生保存
|
||||
if (!isOhos) {
|
||||
try {
|
||||
await Gal.putImageBytes(imageBytes, album: '闲言');
|
||||
return true;
|
||||
} catch (e) {
|
||||
Log.e('[Non-OHOS] gal保存图片失败: $e');
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
Log.d('[OHOS] 使用兼容方式保存图片');
|
||||
@@ -240,11 +256,26 @@ class OhosCompatibilityHelper {
|
||||
/// OHOS返回false(需要通过分享降级)
|
||||
static bool get supportsDirectGallerySave => !isOhos;
|
||||
|
||||
/// OHOS平台兼容的视频保存方法
|
||||
/// gal插件不支持OHOS,使用系统分享作为替代方案
|
||||
/// 跨平台兼容的视频保存方法
|
||||
///
|
||||
/// - 鸿蒙端:gal插件不支持,使用系统分享作为替代方案
|
||||
/// - 非鸿蒙端(iOS/Android/macOS):调用 gal 原生保存到相册
|
||||
/// - Web端:返回 false(不支持)
|
||||
///
|
||||
/// 调用方无需预判断平台,方法内部统一分发。
|
||||
static Future<bool> saveVideoToGalleryCompat(String videoPath) async {
|
||||
if (kIsWeb) return false;
|
||||
if (!isOhos) return false;
|
||||
|
||||
// 非鸿蒙端:调用 gal 原生保存
|
||||
if (!isOhos) {
|
||||
try {
|
||||
await Gal.putVideo(videoPath, album: '闲言');
|
||||
return true;
|
||||
} catch (e) {
|
||||
Log.e('[Non-OHOS] gal保存视频失败: $e');
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
Log.d('[OHOS] 使用兼容方式保存视频');
|
||||
|
||||
Reference in New Issue
Block a user