【问题标题】:Add Sticker on Image in flutter在颤动的图像上添加贴纸
【发布时间】:2020-06-17 15:42:40
【问题描述】:

As shown in picture我无法在图像上添加贴纸。我是flutter的新手,如果有人知道,请帮助我。 我需要像在 Instagram 中一样查看、编辑照片、旋转和拖动图像上的贴纸。

【问题讨论】:

  • 由于您的问题是在 UI 上,请添加快照或模拟图片,以便我们了解您的问题。另外,请添加您的实际代码,您在哪里停止或您的拦截器是什么。

标签: flutter


【解决方案1】:

你可以使用包https://pub.dev/packages/flutter_simple_sticker_view
示例代码https://github.com/myriky/flutter_simple_sticker_view/tree/master/example

代码sn-p

FlutterSimpleStickerView _stickerView = FlutterSimpleStickerView(
    Container(
      decoration: BoxDecoration(
          color: Colors.red,
          image: DecorationImage(
              fit: BoxFit.cover,
              image: NetworkImage(
                  "https://images.unsplash.com/photo-1544032527-042957c6f7ce?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=800&q=60"))),
    ),
    [
      Image.asset("assets/icons8-superman-50.png"), 

工作演示

完整代码

import 'dart:typed_data';
import 'package:flutter/material.dart';
import 'package:flutter_simple_sticker_view/flutter_simple_sticker_view.dart';
import 'package:image_gallery_saver/image_gallery_saver.dart';
import 'package:permission_handler/permission_handler.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(title: "Flutter Simple Sticker View", home: HomeView());
  }
}

class HomeView extends StatefulWidget {
  @override
  _HomeViewState createState() => _HomeViewState();
}

class _HomeViewState extends State<HomeView> {
  FlutterSimpleStickerView _stickerView = FlutterSimpleStickerView(
    Container(
      decoration: BoxDecoration(
          color: Colors.red,
          image: DecorationImage(
              fit: BoxFit.cover,
              image: NetworkImage(
                  "https://images.unsplash.com/photo-1544032527-042957c6f7ce?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=800&q=60"))),
    ),
    [
      Image.asset("assets/icons8-superman-50.png"),
      Image.asset("assets/icons8-captain-america-50.png"),
      Image.asset("assets/icons8-avengers-50.png"),
      Image.asset("assets/icons8-iron-man-50.png"),
      Image.asset("assets/icons8-batman-50.png"),
      Image.asset("assets/icons8-thor-50.png"),
      Image.asset("assets/icons8-venom-head-50.png"),
      Image.asset("assets/icons8-homer-simpson-50.png"),
      Image.asset("assets/icons8-spider-man-head-50.png"),
      Image.asset("assets/icons8-harry-potter-50.png"),
      Image.asset("assets/icons8-genie-lamp-50.png"),
      Image.asset("assets/icons8-cyborg-50.png"),
      Image.asset("assets/icons8-one-ring-50.png"),
    ],
    // panelHeight: 150,
    // panelBackgroundColor: Colors.blue,
    // panelStickerBackgroundColor: Colors.pink,
    // panelStickercrossAxisCount: 4,
    // panelStickerAspectRatio: 1.0,
  );

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: Text("Flutter Simple Sticker View"),
          actions: <Widget>[
            IconButton(
              icon: Icon(Icons.save_alt),
              onPressed: () async {
                Uint8List image = await _stickerView.exportImage();

                Map<PermissionGroup, PermissionStatus> permissions =
                    await PermissionHandler()
                        .requestPermissions([PermissionGroup.storage]);
                await ImageGallerySaver.saveImage(image);
              },
            )
          ],
        ),
        body: _stickerView);
  }
}

【讨论】:

  • 感谢您的回复。我试过这个,但贴纸的缩放不能正常工作。我也想要这个用于文本,如何将它用于文本?
  • 我建议询问 github 所有者或将问题发布到 github。乐意效劳。如果有帮助,请将其标记为答案。谢谢。
  • 如果现在有人想使用具有 null-safety 的包,我已将其迁移到 null-safety 并添加了对旋转贴纸的支持。 pub.dev/packages/stick_it
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-18
  • 1970-01-01
  • 2019-09-07
  • 1970-01-01
  • 2020-03-17
相关资源
最近更新 更多