Flutter图像绘制插件bulk_image_draw的使用
Flutter图像绘制插件bulk_image_draw的使用
builk_image_draw
是一个 Flutter 包,允许你在图像上绘制线条或放置图钉。目前仅支持 Android 和 iOS 平台。
安装
首先,在 pubspec.yaml
文件中添加 builk_image_draw
作为依赖项。
Android
在项目的 android/app/build.gradle
文件中,将最低的 Android SDK 版本设置为 21 或更高。
minSdkVersion 25
然后,在 pubspec.yaml
文件中添加以下内容:
dependencies:
builk_image_draw: any
接下来,运行 flutter pub get
来获取依赖。
Widget 使用
以下是 BuilkImageDraw
的主要属性和用法:
属性说明
属性名称 | 描述 |
---|---|
imageUrl |
图像的位置或 URL |
deletePin |
点击移除图钉时的回调函数 |
undoComplete |
撤销事件成功处理后的回调函数 |
clearButton |
清除按钮事件成功处理后的回调函数 |
loadPlanComplete |
渲染 imageUrl 成功后的回调函数 |
drawComplete |
绘制列表渲染成功的回调函数 |
drawImageSuccess |
绘制完成后的回调函数 |
drawListView |
要放置在图像上的图片列表 |
drawStackBackList |
可以撤销的图片列表 |
示例代码
以下是一个完整的示例代码,展示了如何使用 builk_image_draw
插件。
import 'dart:io';
import 'package:builk_image_draw/image_draw/builk_image_draw.dart';
import 'package:builk_image_draw/image_draw/builk_image_draw_controller.dart';
import 'package:flutter/material.dart';
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> {
[@override](/user/override)
void initState() {
super.initState();
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: ImageDrawWidget(),
);
}
}
class ImageDrawWidget extends StatefulWidget {
ImageDrawWidget({Key? key}) : super(key: key);
[@override](/user/override)
_ImageDrawWidgetState createState() {
return _ImageDrawWidgetState();
}
}
class _ImageDrawWidgetState extends State<ImageDrawWidget> {
File? imagefile;
var imageDrawControl = BuilkImageDrawController();
[@override](/user/override)
void initState() {
super.initState();
}
[@override](/user/override)
void dispose() {
super.dispose();
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Plugin example app'),
),
body: Container(
alignment: Alignment.center,
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
// 显示当前选择的图像
(imagefile != null)
? Container(
alignment: Alignment.center,
width: 200,
child: Image.file(imagefile!),
)
: Container(
alignment: Alignment.center,
width: 200,
child: Icon(Icons.image, size: 200),
)
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: () async {
// 弹出绘制界面
showDialog(
context: context,
builder: (context) {
return BuilkImageDraw(
deletePin: (value) {},
undoComplete: () {},
clearButton: () {},
drawListView: [],
drawStackBackList: [],
controller: imageDrawControl,
drawComplete: () { },
loadPlanComplete: () {
// 设置画笔颜色为红色并启用画笔模式
imageDrawControl.changeColor(Colors.red);
imageDrawControl.selectPen(true);
},
drawImageSuccess: (value) { },
imageUrl: 'https://wpmedia.roomsketcher.com/content/uploads/2022/01/06145940/What-is-a-floor-plan-with-dimensions.png',
);
},
);
},
child: Icon(Icons.edit),
),
);
}
}
更多关于Flutter图像绘制插件bulk_image_draw的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
bulk_image_draw
是一个用于在 Flutter 中高效绘制多个图像的插件。它允许你在一个画布上批量绘制多个图像,从而提高性能,特别是在需要绘制大量图像时。
安装
首先,你需要在 pubspec.yaml
文件中添加 bulk_image_draw
插件的依赖:
dependencies:
flutter:
sdk: flutter
bulk_image_draw: ^0.1.0 # 请检查最新版本
然后运行 flutter pub get
来安装依赖。
基本用法
-
导入包:
import 'package:bulk_image_draw/bulk_image_draw.dart';
-
创建
BulkImageDraw
实例:final bulkImageDraw = BulkImageDraw();
-
加载图像:
你可以使用
ImageProvider
来加载图像,例如AssetImage
或NetworkImage
。final imageProvider = AssetImage('assets/images/example.png');
-
绘制图像:
使用
bulkImageDraw.drawImage
方法来绘制图像。你可以指定图像的位置、大小等参数。bulkImageDraw.drawImage( imageProvider: imageProvider, rect: Rect.fromLTWH(50, 50, 100, 100), );
-
在画布上绘制:
最后,你需要在
CustomPaint
的paint
方法中调用bulkImageDraw.paint
来将图像绘制到画布上。class MyPainter extends CustomPainter { final BulkImageDraw bulkImageDraw; MyPainter(this.bulkImageDraw); @override void paint(Canvas canvas, Size size) { bulkImageDraw.paint(canvas); } @override bool shouldRepaint(covariant CustomPainter oldDelegate) { return true; } }
-
使用
CustomPaint
组件:在你的 UI 中使用
CustomPaint
组件来显示绘制的图像。class MyHomePage extends StatelessWidget { @override Widget build(BuildContext context) { final bulkImageDraw = BulkImageDraw(); final imageProvider = AssetImage('assets/images/example.png'); bulkImageDraw.drawImage( imageProvider: imageProvider, rect: Rect.fromLTWH(50, 50, 100, 100), ); return Scaffold( appBar: AppBar( title: Text('Bulk Image Draw Example'), ), body: Center( child: CustomPaint( size: Size(300, 300), painter: MyPainter(bulkImageDraw), ), ), ); } }
高级用法
-
批量绘制多个图像:
你可以多次调用
bulkImageDraw.drawImage
来绘制多个图像。bulkImageDraw.drawImage( imageProvider: AssetImage('assets/images/image1.png'), rect: Rect.fromLTWH(10, 10, 50, 50), ); bulkImageDraw.drawImage( imageProvider: AssetImage('assets/images/image2.png'), rect: Rect.fromLTWH(70, 70, 50, 50), );
-
图像缩放和旋转:
你可以通过
scale
和rotation
参数来对图像进行缩放和旋转。bulkImageDraw.drawImage( imageProvider: AssetImage('assets/images/example.png'), rect: Rect.fromLTWH(50, 50, 100, 100), scale: 0.5, rotation: 45, );