Flutter贴纸视图插件sticker_view的使用

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

Flutter贴纸视图插件sticker_view的使用

Flutter插件sticker_view允许你旋转、调整大小、移动、更新层级和删除任何文本、图片或其他小部件。它为用户提供了一个交互式的编辑环境,以创建个性化的图像或设计。

sticker_view.gif

可用功能

  • ✅ 旋转
  • ✅ 调整大小
  • ✅ 移动
  • ✅ 层级更新(改变堆叠位置)
  • ✅ 删除

🚀 安装

该插件可在Pub上获取:https://pub.dev/packages/sticker_view

在你的应用程序的pubspec.yaml文件中的dependencies部分添加如下内容:

sticker_view : latest_version

请将latest_version替换为你需要的具体版本号或使用^符号跟随最新稳定版。

🔖 使用方法

集成sticker_view

要集成sticker_view,你需要创建一个StickerView实例,并提供一个包含Sticker对象的列表作为参数。每个Sticker可以是任意的小部件,并且必须有一个唯一的ID。下面是一个简单的例子:

StickerView(
  stickerList: [
    Sticker(
      child: Image.network("https://tinyurl.com/48ne4wj5"),
      id: "uniqueId_111",
    ),
    Sticker(
      child: const Text("Hello"),
      id: "uniqueId_222",
      isText: true,
    ),
  ],
),

将StickerView保存为Uint8List

你可以通过调用StickerView.saveAsUint8List()方法来将当前的StickerView保存为图像数据(Uint8List)。此方法接受一个参数指定图像质量(高、中、低)。

await StickerView.saveAsUint8List(ImageQuality.high);

示例代码

以下是一个完整的示例代码,演示了如何使用sticker_view创建一个带有浮动按钮的应用程序,用户可以通过点击按钮保存当前编辑的内容到本地存储。

import 'dart:io';
import 'dart:typed_data';
import 'package:path_provider/path_provider.dart';
import 'package:flutter/material.dart';
import 'package:sticker_view/stickerview.dart';

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

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

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

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

  @override
  State<HomePage> createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        floatingActionButton: FloatingActionButton(
          child: const Icon(Icons.save_alt),
          onPressed: () async {
            Uint8List? imageData = await StickerView.saveAsUint8List(ImageQuality.high);
            if (imageData != null) {
              var imageName = DateTime.now().microsecondsSinceEpoch.toString();
              var appDocDir = await getApplicationDocumentsDirectory();
              String imagePath = '${appDocDir.path}/$imageName.png';
              File imageFile = File(imagePath);
              imageFile.writeAsBytesSync(imageData);
              // ignore: avoid_print
              print("imageFile::::$imageFile");
            }
          },
        ),
        body: Center(
          // Sticker Editor View
          child: StickerView(
            // List of Stickers
            stickerList: [
              Sticker(
                id: "uniqueId_111",
                child: Image.network(
                  "https://images.unsplash.com/photo-1640113292801-785c4c678e1e?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=736&q=80",
                ),
              ),
              Sticker(
                id: "uniqueId_222",
                isText: true,
                child: const Text("Hello"),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

如果你发现这个项目对你有帮助,请考虑给它一个⭐️并在社交媒体上与你的朋友们分享。欢迎贡献代码!如果你有任何特性请求或遇到bug,可以通过Create a Ticket提交问题。


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

1 回复

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


当然,以下是如何在Flutter项目中集成和使用sticker_view插件的详细代码案例。sticker_view插件允许你在Flutter应用中创建和管理贴纸视图,通常用于图片编辑、标注等功能。

第一步:添加依赖

首先,你需要在pubspec.yaml文件中添加sticker_view的依赖。确保你的pubspec.yaml文件包含以下内容:

dependencies:
  flutter:
    sdk: flutter
  sticker_view: ^最新版本号  # 请替换为最新的版本号

然后运行以下命令来安装依赖:

flutter pub get

第二步:导入插件

在你的Dart文件中导入sticker_view插件:

import 'package:sticker_view/sticker_view.dart';

第三步:创建UI

以下是一个完整的示例,展示了如何在Flutter应用中集成和使用sticker_view插件:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Sticker View Example'),
        ),
        body: StickerViewExample(),
      ),
    );
  }
}

class StickerViewExample extends StatefulWidget {
  @override
  _StickerViewExampleState createState() => _StickerViewExampleState();
}

class _StickerViewExampleState extends State<StickerViewExample> {
  final List<Sticker> stickers = [
    Sticker(
      image: AssetImage('assets/sticker1.png'),  // 请确保你有这个资源文件
      position: Offset(50, 50),
      size: Size(100, 100),
      isDraggable: true,
      isResizable: true,
      isRotatable: true,
      isDeletable: true,
    ),
    // 你可以添加更多贴纸
  ];

  @override
  Widget build(BuildContext context) {
    return Center(
      child: StickerView(
        stickers: stickers,
        image: NetworkImage('https://example.com/your-image.jpg'),  // 你可以使用本地图片或网络图片
        onStickerChanged: (updatedStickers) {
          setState(() {
            stickers.clear();
            stickers.addAll(updatedStickers);
          });
        },
      ),
    );
  }
}

第四步:配置资源文件

如果你使用的是本地图片资源,比如上面的assets/sticker1.png,你需要在pubspec.yaml文件中声明这些资源:

flutter:
  assets:
    - assets/sticker1.png
    # 其他资源文件

第五步:运行应用

现在,你可以运行你的Flutter应用,应该能看到一个带有贴纸视图的界面,并且你可以拖动、缩放、旋转和删除贴纸。

注意事项

  1. 确保你使用的图片资源已经正确放置在项目的assets目录下,并且在pubspec.yaml中进行了声明。
  2. sticker_view插件的具体API可能会有所变化,请参考其官方文档以获取最新的使用方法和功能。

以上就是在Flutter中使用sticker_view插件的完整代码案例。希望这对你有所帮助!

回到顶部