Flutter贴纸编辑插件stickereditor的使用

Flutter贴纸编辑插件stickereditor的使用

Sticker Editor

一个用于iOS、Android和Mac的Flutter插件,支持旋转、缩放、移动和编辑文本、照片和贴纸。

功能 💚

  • 手动控制部件的位置,可以拖拽。
  • 可以通过boundHeightboundWidth参数限制拖拽区域。
  • onTaponCancel函数允许用户自定义操作。
  • 可以通过缩放功能调整大小。
  • 高度可定制化。
  • 可以使用整个贴纸视图或特定组件。

安装

首先,在你的pubspec.yaml文件中添加stickereditor依赖:

dependencies:
  stickereditor: ^x.y.z

macOS

对于NetworkImage,macOS需要请求特定权限才能访问网络。打开macos/Runner/DebugProfile.entitlements文件,并添加以下键值对:

<key>com.apple.security.network.client</key>
<true/>

如何使用

贴纸视图

StickerEditingView(
  isnetwork: false,
  height: 300,
  width: 300,
  imgUrl: backgroundImageUrl,
  fonts: fonts,
  palletColor: colorPallet,
  assetList: stickerList,
),

文本编辑框

Container(
  height: 300,
  width: 300,
  color: Colors.blue,
  child: Stack(
    children: [
      TextEditingBox(
        fonts: fonts,
        boundHeight: 200,
        boundWidth: 100,
        isSelected: true,
        palletColor: colorPallet,
        newText: TextModel(
            name: 'Text EditingBox',
            textStyle:
                GoogleFonts.pacifico(fontSize: 25, color: Colwhite),
            top: top,
            isSelected: true,
            textAlign: TextAlign.center,
            scale: 1,
            left: left),
      ),
    ],
  ),
),

图片编辑框

Container(
  height: 300,
  width: 300,
  color: Colors.blue,
  child: Stack(
    children: [
      StickerEditingBox(
          boundHeight: 200,
          boundWidth: 200,
          pictureModel: PictureModel(
            isNetwork: true,
            isSelected: false,
            left: 50,
            top: 50,
            scale: 1,
            stringUrl:
                'https://raw.githubusercontent.com/Harsh-Radadiya/sticker_editor/master/assets/t-shirt.jpeg',
          )),
    ],
  ),
)

示例代码

运行示例应用以了解更多信息。以下是示例代码:

import 'package:flutter/material.dart';
import 'package:stickereditor_example/view.dart';

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

class MyApp extends StatefulWidget {
  const MyApp({Key? key}) : super(key: key);

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

class _MyAppState extends State<MyApp> {
  [@override](/user/override)
  void initState() {
    super.initState();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return const MaterialApp(
      debugShowCheckedModeBanner: false,
      home: HomePage(),
    );
  }
}

class HomePage extends StatefulWidget {
  const HomePage({Key? key}) : super(key: key);

  [@override](/user/override)
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('StickerEditor Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            ElevatedButton(
                onPressed: () {
                  Navigator.push(
                    context,
                    MaterialPageRoute(
                        builder: (context) => const StickerEditingViewScreen()),
                  );
                },
                child: const Text('StickerEditingViewScreen')),
            const SizedBox(height: 10),
            ElevatedButton(
                onPressed: () {
                  Navigator.push(
                    context,
                    MaterialPageRoute(
                        builder: (context) => const TextEditingBoxScreen()),
                  );
                },
                child: const Text('TextEditingBox')),
            const SizedBox(height: 10),
            ElevatedButton(
                onPressed: () {
                  Navigator.push(
                    context,
                    MaterialPageRoute(
                        builder: (context) => const StickerEditingBoxScreen()),
                  );
                },
                child: const Text('StickerEditingBox'))
          ],
        ),
      ),
    );
  }
}

更多关于Flutter贴纸编辑插件stickereditor的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter贴纸编辑插件stickereditor的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


stickereditor 是一个用于 Flutter 的贴纸编辑插件,允许用户在应用中添加、移动、缩放和旋转贴纸。这个插件通常用于图像编辑应用中,允许用户自定义他们的图片。

安装

首先,你需要在 pubspec.yaml 文件中添加 stickereditor 依赖:

dependencies:
  flutter:
    sdk: flutter
  stickereditor: ^latest_version

然后运行 flutter pub get 来安装依赖。

基本用法

以下是一个简单的示例,展示如何在 Flutter 应用中使用 stickereditor

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Sticker Editor Example'),
        ),
        body: StickerEditor(
          initialStickers: [
            Sticker(
              id: '1',
              assetPath: 'assets/stickers/sticker1.png',
              position: Offset(100, 100),
              size: Size(100, 100),
            ),
            Sticker(
              id: '2',
              assetPath: 'assets/stickers/sticker2.png',
              position: Offset(200, 200),
              size: Size(150, 150),
            ),
          ],
          onStickerAdded: (sticker) {
            print('Sticker added: ${sticker.id}');
          },
          onStickerRemoved: (sticker) {
            print('Sticker removed: ${sticker.id}');
          },
          onStickerUpdated: (sticker) {
            print('Sticker updated: ${sticker.id}');
          },
        ),
      ),
    );
  }
}

参数说明

  1. initialStickers: 初始贴纸列表。每个贴纸都有一个唯一的 idassetPath(贴纸资源路径)、position(贴纸的位置)和 size(贴纸的大小)。

  2. onStickerAdded: 当贴纸被添加时触发的回调。

  3. onStickerRemoved: 当贴纸被移除时触发的回调。

  4. onStickerUpdated: 当贴纸被更新(移动、缩放、旋转)时触发的回调。

功能

  • 添加贴纸: 你可以通过调用 StickerEditoraddSticker 方法动态添加贴纸。

  • 移除贴纸: 你可以通过调用 StickerEditorremoveSticker 方法移除贴纸。

  • 更新贴纸: 用户可以通过手势移动、缩放和旋转贴纸,StickerEditor 会自动处理这些操作。

注意事项

  • 确保你的贴纸资源路径是正确的,并且贴纸资源已经添加到 pubspec.yaml 文件中。

  • 如果你需要保存编辑后的图片,可以使用 StickerEditor 提供的 exportImage 方法将当前编辑的内容导出为图片。

导出图片示例

StickerEditor editor = StickerEditor(
  // 配置 StickerEditor
);

// 导出图片
Uint8List? imageBytes = await editor.exportImage();
if (imageBytes != null) {
  // 处理导出的图片
}
回到顶部