Flutter分享链接插件share_link的使用

发布于 1周前 作者 phonegap100 来自 Flutter

Flutter分享链接插件share_link的使用

share_link 是一个用于在Flutter应用中分享链接的插件,它支持添加UTM参数,并能反馈用户选择的应用程序。本文将介绍如何安装和使用这个插件,并提供一个完整的示例Demo。

插件简介

share_link 允许你通过操作系统集成的标准UI来分享URL。根据用户选择的分享目标(如WhatsApp、邮件等),会自动添加相应的UTM参数(如utm_sourceutm_medium)。此外,该插件还提供了关于分享结果的反馈信息,可用于分析或感谢用户的分享行为。

支持平台

  • Android: 使用IntentChooser展示标准分享界面。
  • iOS: 使用UIActivityViewController展示分享界面。
  • MacOS: 使用NSSharingServicePicker展示服务选项菜单。
  • Web: 尝试使用Web Share API,若不支持则退回到简单的window.open方法。

安装

在你的pubspec.yaml文件中添加依赖:

dependencies:
  share_link: ^1.0.0

然后运行flutter pub get以安装包。

使用方法

导入库并调用shareUri函数:

import 'package:share_link/share_link.dart';

final result = await LinkShare().shareUri(Uri.parse("https://some_link"));

示例代码

下面是一个完整的示例Demo,展示了如何在Flutter应用中使用share_link插件来分享链接,并显示分享结果。

import 'package:flutter/material.dart';
import 'package:share_link/share_link.dart';
import 'package:share_link_example/widget_bounds.dart'; // 这个包需要你自己实现或者找到替代方案

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Share link'),
        ),
        body: Container(
          alignment: Alignment.topCenter,
          padding: const EdgeInsets.all(32),
          child: const ShareButton(),
        ),
      ),
    );
  }
}

class ShareButton extends StatefulWidget {
  const ShareButton({super.key});

  [@override](/user/override)
  State<ShareButton> createState() => _ShareButtonState();
}

class _ShareButtonState extends State<ShareButton> {
  ShareResult? _shareResult;

  [@override](/user/override)
  Widget build(BuildContext context) {
    final shareButtonKey = GlobalKey();
    return Column(
      mainAxisSize: MainAxisSize.min,
      children: [
        ElevatedButton(
          key: shareButtonKey,
          child: const Text('Share https://2312.nl'),
          onPressed: () async {
            final result = await ShareLink.shareUri(
              Uri.parse('https://2312.nl'),
              subject: '2312.nl website',
              shareOrigin: shareButtonKey.absolutePositionBounds, // 注意:这里可能需要调整为适合你项目的实现方式
            );
            setState(() {
              _shareResult = result;
            });
          },
        ),
        if (_shareResult != null) const SizedBox(height: 16),
        if (_shareResult != null)
          Text(
            _shareResult!.success == true
                ? "${_shareResult!.uri}\nwas shared to\n${_shareResult!.target}"
                : 'Link not shared',
            style: Theme.of(context).textTheme.bodySmall,
            textAlign: TextAlign.center,
          ),
      ],
    );
  }
}

更多关于Flutter分享链接插件share_link的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter分享链接插件share_link的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中使用share_link插件来分享链接的一个示例代码案例。请确保你已经将share_link插件添加到你的pubspec.yaml文件中:

dependencies:
  flutter:
    sdk: flutter
  share_link: ^x.y.z  # 请将x.y.z替换为最新版本号

添加完依赖后,运行flutter pub get来安装插件。

以下是一个简单的Flutter应用示例,演示如何使用share_link插件来分享一个链接:

import 'package:flutter/material.dart';
import 'package:share_link/share_link.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Share Link Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  final String shareLink = 'https://www.example.com';
  final String shareTitle = 'Check out this link!';
  final String shareMessage = 'This is a great resource for learning Flutter.';

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Share Link Example'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: _shareLink,
          child: Text('Share Link'),
        ),
      ),
    );
  }

  void _shareLink() async {
    try {
      final ShareLink shareLinkInstance = ShareLink();
      await shareLinkInstance.share(
        title: shareTitle,
        text: shareMessage,
        url: Uri.parse(shareLink),
      );
      ScaffoldMessenger.of(context).showSnackBar(
        SnackBar(
          content: Text('Link shared successfully!'),
        ),
      );
    } catch (e) {
      ScaffoldMessenger.of(context).showSnackBar(
        SnackBar(
          content: Text('Failed to share link: $e'),
          backgroundColor: Colors.red,
        ),
      );
    }
  }
}

在这个示例中,我们创建了一个简单的Flutter应用,其中包含一个按钮,当用户点击该按钮时,会尝试分享一个预定义的链接。ShareLink类的share方法接受三个参数:

  • title:分享的标题。
  • text:分享的文本描述。
  • url:要分享的链接,必须是Uri类型,因此我们需要使用Uri.parse方法来解析字符串链接。

如果分享成功,会显示一个成功的SnackBar;如果失败,会显示一个包含错误信息的SnackBar。

请注意,实际使用中,share_link插件可能具有不同的API,因此请查阅最新的官方文档以获取最准确的信息。另外,不同的平台(iOS和Android)可能会有不同的分享行为,确保在真实设备上测试你的分享功能。

回到顶部