Flutter核心库painting详解
painting是Flutter的一个核心库,它提供了许多用于绘制和布局的widget和类。下面是一些painting库中常用的widget和类:
- CustomPaint:一个可以自定义绘制的widget。使用CustomPaint可以在绘制区域中任意绘制内容。
- Canvas:一个可以用来绘制的画布。Canvas包含了各种绘制方法,如drawLine、drawCircle、drawRect等,可以用来绘制各种形状的图形。
- Path:一个可以用来绘制任意形状的路径。Path包含了各种方法,如moveTo、lineTo、quadraticBezierTo、cubicTo等,可以用来绘制各种复杂的路径。
- Decoration:一个可以用来修饰widget的装饰器。Decoration包含了各种修饰方法,如Border、BoxDecoration、Gradient等,可以用来为widget添加各种样式和效果。
- BoxShadow:一个可以为widget添加阴影效果的类。BoxShadow包含了阴影的各种属性,如颜色、偏移量、模糊半径等。
- Gradient:一个可以用来绘制渐变效果的类。Gradient包含了各种渐变方法,如LinearGradient、RadialGradient、SweepGradient等,可以用来为widget添加各种渐变效果。
下面是一个简单的使用CustomPaint和Canvas绘制一个圆形的示例:
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Painting App',
home: MyHomePage(),
);
}
}
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Painting App'),
),
body: Center(
child: CustomPaint(
size: Size(200, 200),
painter: MyPainter(),
),
),
);
}
}
class MyPainter extends CustomPainter {
@override
void paint(Canvas canvas, Size size) {
final paint = Paint()
..color = Colors.blue
..strokeWidth = 5
..style = PaintingStyle.stroke;
final center = Offset(size.width / 2, size.height / 2);
final radius = size.width / 2;
canvas.drawCircle(center, radius, paint);
}
@override
bool shouldRepaint(CustomPainter oldDelegate) => false;
}
该示例使用了CustomPaint和Canvas来绘制一个蓝色的圆形。CustomPaint的painter属性指定了绘制时使用的MyPainter类,MyPainter类中的paint方法使用Canvas绘制了一个圆形。