Flutter鸿蒙跨平台插件:share_extend 使用指南
·
插件介绍
share_extend 是一个 Flutter 插件,用于在应用中调用系统分享功能,支持分享文本、图片、视频、文件等多种类型的内容。该插件已适配鸿蒙平台,提供了简单易用的 API 来实现跨应用的内容分享。
主要功能包括:
- 文本分享:可以分享纯文本内容
- 图片分享:可以分享本地图片文件
- 视频分享:可以分享本地视频文件
- 文件分享:可以分享任意类型的文件
- 多图分享:可以同时分享多张图片
安装与使用
1. 安装方式
在项目的 pubspec.yaml 文件中添加以下依赖配置:
dependencies:
share_extend:
git:
url: "https://atomgit.com/openharmony-sig/fluttertpc_share_extend.git"
执行命令安装依赖:
flutter pub get
2. API 使用示例
2.1 基本使用
import 'package:flutter/material.dart';
import 'package:share_extend/share_extend.dart';
import 'package:image_picker/image_picker.dart';
import 'package:path_provider/path_provider.dart';
import 'dart:io';
void main() => runApp(MyApp());
class MyApp extends StatefulWidget {
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
final _picker = ImagePicker();
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Plugin example app'),
),
body: Container(
child: Center(
child: Column(
children: <Widget>[
// 分享文本
ElevatedButton(
onPressed: () {
ShareExtend.share("share text", "text",
sharePanelTitle: "share text title",
subject: "share text subject");
},
child: Text("share text"),
),
// 分享图片
ElevatedButton(
onPressed: () async {
final res = await _picker.pickImage(source: ImageSource.gallery);
if (res != null && res.path != null) {
ShareExtend.share(res.path, "image",
sharePanelTitle: "share image title",
subject: "share image subject");
}
},
child: Text("share image"),
),
// 分享视频
ElevatedButton(
onPressed: () async {
final res = await _picker.pickVideo(source: ImageSource.gallery);
if (res != null && res.path != null) {
ShareExtend.share(res.path, "video");
}
},
child: Text("share video"),
),
// 分享文件
ElevatedButton(
onPressed: () async {
Directory dir = await getApplicationDocumentsDirectory();
File testFile = File("${dir.path}/test.txt");
if (!await testFile.exists()) {
await testFile.create(recursive: true);
testFile.writeAsStringSync("test for share documents file");
}
ShareExtend.share(testFile.path, "file");
},
child: Text("share file"),
),
],
),
),
),
),
);
}
}
2.2 多图分享示例
import 'package:multi_image_picker/multi_image_picker.dart';
import 'dart:io';
import 'dart:typed_data';
import 'package:flutter/services.dart';
import 'package:path_provider/path_provider.dart';
// 分享多张图片
_shareMultipleImages() async {
List<Asset> assetList = await MultiImagePicker.pickImages(maxImages: 5);
var imageList = <String>[];
for (var asset in assetList) {
String path = await _writeByteToImageFile(await asset.getByteData(quality: 30));
imageList.add(path);
}
ShareExtend.shareMultiple(imageList, "image", subject: "share multi image");
}
// 将字节数据写入图片文件
Future<String> _writeByteToImageFile(ByteData byteData) async {
Directory dir = await getApplicationDocumentsDirectory();
File imageFile = File("${dir.path}/flutter/${DateTime.now().millisecondsSinceEpoch}.png");
imageFile.createSync(recursive: true);
imageFile.writeAsBytesSync(byteData.buffer.asUint8List(0));
return imageFile.path;
}
2.3 核心 API 说明
| 方法名 | 功能描述 | 参数说明 | 返回值类型 | 鸿蒙支持 |
|---|---|---|---|---|
| share(String text, String type,{Rect? sharePositionOrigin,String? sharePanelTitle,String subject = “”,List? extraTexts}) | 分享单个内容 | text:分享内容(文本或文件路径)type:分享类型(“text”、“image”、“audio”、“video”、“file”)sharePanelTitle:分享面板标题subject:分享主题 |
Future | 是 |
| shareMultiple(List list, String type,{Rect? sharePositionOrigin,String? sharePanelTitle,String subject = “”,List? extraTexts}) | 分享多个内容 | list:分享内容列表(文本或文件路径列表)type:分享类型其他参数同 share 方法 |
Future | 是 |
约束与限制
兼容性
已在以下环境中测试通过:
- Flutter: 3.7.12-ohos-1.0.6; SDK: 5.0.0(12); IDE: DevEco Studio: 5.0.13.200; ROM: 5.1.0.120 SP3;
总结
share_extend 插件为鸿蒙平台提供了简单易用的系统分享功能,支持多种类型的内容分享。通过简洁的 API 设计,开发者可以轻松实现文本、图片、视频、文件等内容的分享,适用于各种需要跨应用分享内容的场景。
欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)