我们在上一章回中介绍自定义组件的概念和分类,重点介绍了如何使用CustomPaint和CustomPainter这两个组件重绘组件。本章回将在此基础上介绍一些细节,这些
细节隐藏在CustomPainter的canvas中,接下来我们将详细介绍它。
上一章回中我们使用过CustomPainter的paint()方法,不过没有详细介绍它,该方法包含两个参数:
void paint(Canvas canvas, Size size) {
Paint paint = Paint()
..color = Colors.blue;
..isAntiAlias = true
..strokeWidth = 2.0;
canvas.save();
Rect rect = Rect.fromLTWH(0, 0, size.width,size.height);
canvas.drawRect(rect, paint);
canvas.restore();
}
上面的示例代码中创建了一个蓝色画笔,然后使用drawRect()方法绘制了一个矩形。我在这里就不演示程序的运行结果了,建议大家自己动手去实践。此外,示例代码
中只演示了Canvas类的一种方法,大家可以尝试一下其它的方法,特别是DrawPath()方法,它的功能十分强大。这个就当作我留给大家的课后作业吧。
看官们,与"自定义组件"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!
第一百四十九回 自定义组件三
我们在上一章回中介绍了自定义组件相关的内容,本章回中将继续介绍这方面的内容.闲话休提,让我们一起Talk Flutter吧。
我们在上一章回中介绍了如何使用画布和画笔来绘制不同的内容,进而实现自定义组件中特有的效果,不过这些组件只能看,不能响应事件,本章回中介绍如何在自定义
组件时响应事件。响应事件需要使用GestureDetector组件,本章回将介绍如何把该组件和自定义组件关联起来。
如果想让自定义的组件可以响应组件,那么需要在自定义的组件外层嵌套一个GestureDetector组件,这个是整体的思路,下面介绍具体的实现方法:
GestureDetector(
onPanUpdate: _onPanUpdate,
///手势事件限制在这个容器内,
child: Container(
width: 100,
height: 200,
child: CustomPaint(
painter: CustomPainter(),
size: Size(50,50),
),
),
);
在上面的示例代码中,组件树的根是GestureDetector组件,它的子组件是Container这个容器组件,而容器组件的子组件才是我们自定义的组件,这个代码和上面的
实现方法完全匹配。此外,示例代码中自定义的组件目前只响应拖动事件,也就是onPanUpdated属性对应的内容,我们将它封装成了独立的方法,方法的实现就不演示了。
如果大家想让自定义的组件响应其它类型的事件,可以使用GestureDetector组件的其它属性。
看官们,与"自定义组件"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!