前回、Creative Coding的なものをやる手段の1つとしてゲームエンジンをあげました。
ゲーム的な機能が不要であれば、Canvasに図形を描く単純な方法もあります。
例えば、以下のコードをlib/main.dart
に書くと、
import 'package:flutter/material.dart'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( home: MyHomePage(), ); } } class MyHomePage extends StatefulWidget { @override _MyHomePageState createState() => _MyHomePageState(); } class _MyHomePageState extends State<MyHomePage> { @override Widget build(BuildContext context) { return Scaffold( body: Center( child: CustomPaint(painter: _MyPainter()), ), ); } } class _MyPainter extends CustomPainter { @override bool shouldRepaint(_MyPainter oldDelegate) { return false; } @override void paint(Canvas canvas, Size size) { final Paint stroke = Paint() ..color = Colors.black ..style = PaintingStyle.stroke ..strokeWidth = 3; canvas.drawCircle(const Offset(0, 0), 100, stroke); } }
こんな感じで円を描くことができます。
この例ではshouldRepaint
をfalse
にしていますが、実際はoldDelegate
と今の値を比べて再描画が必要であればtrue
を返します。
Creative Coding的な使い方以外でも、この機能にお世話になることはわりとありそうです。