小智 5
你所需要的似乎只是一块画布。使用画布,您可以绘制任何您想要的东西,并通过按时重画来使其动画化。
Flutter 中通过扩展CustomPaint来支持 Canvas ,如下所示:
class SinCanvas extends StatelessWidget {
const SinCanvas({Key key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Container(
color: Colors.white,
child: CustomPaint(
size:Size(600,400),
painter: SinPainter()
),
);
}
}
class SinPainter extends CustomPainter{
@override void paint(Canvas canvas, Size size){
final midY = size.height/2;
final paint = Paint()..style = PaintingStyle.fill
..color = Colors.black;
canvas.drawLine(Offset(0,midY), Offset(size.width,midY), paint);
var pt = Offset(0,midY);
for(double i=0;i<600;i+=0.1){
final npt = Offset(i,midY-sin(i/50)*100);
canvas.drawLine(pt, npt, paint);
pt = npt;
}
}
@override
bool shouldRepaint(CustomPainter oldDelegate) => true;
}
Run Code Online (Sandbox Code Playgroud)
要制作动画,您可以将 StatelessWidget 更改为 StatefulWidget,并使用 State 更新图形。
希望这能解决您的问题。
| 归档时间: |
|
| 查看次数: |
1113 次 |
| 最近记录: |