Flutter集成第三方服务插件pe_sdk_flutter的使用

Flutter集成第三方服务插件pe_sdk_flutter的使用

概览

Banuba Photo Editor SDK允许你快速地在你的移动应用中添加照片功能和效果。

使用

许可证

在承诺购买许可证之前,你可以免费测试SDK的所有功能。试用期为14天。要开始试用,请联系我们。我们会回复给你试用令牌。

如果有任何问题,欢迎随时联系我们。

安装

在终端中运行以下命令以安装Photo Editor Flutter插件:

$ flutter pub add pe_sdk_flutter

或者,在pubspec.yaml文件中指定该包:

dependencies:
    pe_sdk_flutter: ^0.0.1

集成指南

请遵循我们的集成指南以完成完整的集成。

启动

在应用中设置Banuba许可令牌。

Android

在终端中运行flutter run启动应用到设备上,或者使用IDE(如IntelliJ、VC等)来启动应用。

iOS

  1. 安装CocoaPods依赖项。打开ios目录并在终端中运行pod install
  2. 在目标设置中选择“签名与功能”标签,并选择你的开发团队。
  3. 在终端中运行flutter run启动应用到设备上,或者在IDE(如Xcode、IntelliJ、VC等)中启动应用。

依赖项

版本
Dart 3.3.0
Flutter 3.19.2
Android 6.0+
iOS 15.0+

示例代码

以下是完整的示例代码:

import 'dart:io';
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:flutter/services.dart';
import 'package:image_picker/image_picker.dart';
import 'package:pe_sdk_flutter/export_result.dart';
import 'package:pe_sdk_flutter/pe_sdk_flutter.dart';

// 设置你的许可令牌
const _licenceToken = "SET YOUR LICENCE TOKEN";

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

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

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  final _peSdkFlutterPlugin = PeSdkFlutter();
  String _errorMessage = '';
  String _startMessage = '请启动照片编辑器';
  String? _imagePath;

  // 从相册启动照片编辑器
  Future<void> _startPhotoEditorFromGallery() async {
    try {
      final exportResult = await _peSdkFlutterPlugin.openGalleryScreen(_licenceToken);
      _handleExportResult(exportResult);
    } on PlatformException catch (e) {
      _handlePlatformException(e);
    }
  }

  // 使用图片路径启动照片编辑器
  Future<void> _startPhotoEditorWithImagePath() async {
    final ImagePicker picker = ImagePicker();
    final imageFile = await picker.pickImage(source: ImageSource.gallery);

    final sourceImageFile = imageFile?.path;
    if (sourceImageFile == null) {
      debugPrint('错误:无法启动照片编辑器:请选择一个图像文件');
      return;
    }
    try {
      final exportResult = await _peSdkFlutterPlugin.openEditorScreen(_licenceToken, sourceImageFile);
      _handleExportResult(exportResult);
    } on PlatformException catch (e) {
      _handlePlatformException(e);
    }
  }

  // 处理导出结果
  void _handleExportResult(ExportResult? result) {
    if (result == null) {
      debugPrint('没有导出结果!用户可能在导出前关闭了照片编辑器');
      return;
    }
    debugPrint('导出的照片文件 = ${result.photoSource}');
    setState(() {
      _imagePath = result.photoSource;
    });
  }

  // 处理平台异常
  void _handlePlatformException(PlatformException exception) {
    debugPrint("错误:代码 = ${exception.code},消息 = ${exception.message}");
    setState(() {
      _errorMessage = exception.message ?? '未知错误';
      _startMessage = '查看日志或重试';
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('插件照片编辑器示例'),
        ),
        body: Center(
          child: Padding(
            padding: EdgeInsets.all(25.0),
            child: Column(
              mainAxisAlignment: MainAxisAlignment.center,
              children: [
                Visibility(
                  visible: _errorMessage.isNotEmpty,
                  child: Padding(
                      padding: const EdgeInsets.all(10.0),
                      child: Center(
                          child: Text(
                        _errorMessage,
                        textAlign: TextAlign.center,
                        style: const TextStyle(fontSize: 17.0, color: Colors.red),
                      ))),
                ),
                Expanded(
                    flex: 2,
                    child: _imagePath != null
                        ? Image.memory(
                            File(_imagePath!).readAsBytesSync(),
                          )
                        : Center(
                            child: Text(
                              _startMessage,
                              textAlign: TextAlign.center,
                              style: const TextStyle(fontSize: 17.0),
                            ),
                          )),
                Expanded(
                    flex: 1,
                    child: Center(
                      child: Column(
                        mainAxisAlignment: MainAxisAlignment.center,
                        children: [
                          Padding(
                              padding: EdgeInsets.all(10.0),
                              child: MaterialButton(
                                  color: Colors.blue,
                                  textColor: Colors.white,
                                  disabledColor: Colors.grey,
                                  disabledTextColor: Colors.black,
                                  padding: const EdgeInsets.all(12.0),
                                  splashColor: Colors.blueAccent,
                                  minWidth: 240,
                                  onPressed: () => _startPhotoEditorFromGallery(),
                                  child:
                                      Text("从相册启动照片编辑器"))),
                          Padding(
                              padding: EdgeInsets.all(10.0),
                              child: MaterialButton(
                                  color: Colors.blue,
                                  textColor: Colors.white,
                                  disabledColor: Colors.grey,
                                  disabledTextColor: Colors.black,
                                  padding: const EdgeInsets.all(12.0),
                                  splashColor: Colors.blueAccent,
                                  minWidth: 240,
                                  onPressed: () => _startPhotoEditorWithImagePath(),
                                  child:
                                      Text("从编辑器启动照片编辑器")),
                          ),
                        ],
                      ),
                    )
                )
              ],
            ),
          ),
        ),
      ),
    );
  }
}

更多关于Flutter集成第三方服务插件pe_sdk_flutter的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter集成第三方服务插件pe_sdk_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


要在 Flutter 项目中集成第三方服务插件 pe_sdk_flutter,你需要按照以下步骤进行操作。假设 pe_sdk_flutter 是一个用于与某个第三方服务(如支付、推送、广告等)进行交互的插件。

1. 在 pubspec.yaml 中添加依赖

首先,你需要在 pubspec.yaml 文件中添加 pe_sdk_flutter 的依赖项。

dependencies:
  flutter:
    sdk: flutter
  pe_sdk_flutter: ^1.0.0  # 请根据实际情况替换版本号

然后运行 flutter pub get 来获取依赖。

2. 初始化插件

main.dart 或其它合适的地方初始化 pe_sdk_flutter 插件。通常在 main() 函数中进行初始化。

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化 pe_sdk_flutter
  await PeSdkFlutter.init(
    apiKey: 'YOUR_API_KEY',  // 替换为你的 API Key
    environment: Environment.sandbox,  // 根据需求选择环境
  );

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

3. 使用插件功能

根据 pe_sdk_flutter 提供的 API,你可以在应用中使用其功能。例如,假设插件提供了支付功能,你可以这样调用:

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

class MyHomePage extends StatelessWidget {
  Future<void> _makePayment() async {
    try {
      final response = await PeSdkFlutter.makePayment(
        amount: 100.0,
        currency: 'USD',
        productId: '12345',
      );
      print('Payment successful: ${response.transactionId}');
    } catch (e) {
      print('Payment failed: $e');
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Demo'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: _makePayment,
          child: Text('Make Payment'),
        ),
      ),
    );
  }
}
回到顶部