【 Flutter 】Flutter を 基礎 から 学習 ( ウィジェット編 ) part74 Painting and effects

基礎 から 学ぶ Flutter 」という書籍で  学習 したことを ブログでアウトプットしていこうと思います。今回は ウィジェット編 ( part74 )です。

前回

【 Flutter 】Flutter を 基礎 から 学習 ( ウィジェット編 ) part73 Painting and effects

引き続き、Painting and effectsについて学びます。

Painting and effects

CustomPaintウィジェット

CustomPaintウィジェットは自由に図形を描画するときに使うウィジェットです。

自由!

すごいウィジェットが作れそうですね。

このウィジェットはpainterプロパティにCustomPainterクラスを継承した自作クラスを指定します。

  • main.dart
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_app/mypainter.dart';

void main() {
  runApp(new MaterialApp(home: new MyApp()));
}

class MyApp extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    return _State();
  }
}

class _State extends State<MyApp> {
  int _index = 0;
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
        home: Scaffold(
      appBar: AppBar(
        title: Text('テスト中です。'),
      ),
      body: CustomPaint(
        painter: MyPainter(),
      ),
    ));
  }
}
  • mypainter.dart
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';

class MyPainter extends CustomPainter {
  @override
  void paint(Canvas canvas, Size size) {
    // カスケード記法でしたかね!
    final paint = Paint()..color = Colors.blue;
    canvas.drawRect(Rect.fromLTWH(0, 0, 50, 50), paint);
    paint.color = Colors.grey;
    paint.strokeWidth = 5;
    canvas.drawLine(Offset(140, 10), Offset(140, 60), paint);
    paint.color = Colors.red;
    canvas.drawCircle(Offset(100, 35), 25, paint);
  }

  @override
  bool shouldRepaint(covariant CustomPainter oldDelegate) {
    return true;
  }
}

 

最後に

参考書のサンプルではうまく動作しませんでした。
何も表示されません😅

今日はここまで!

参考

[Flutter] キャンバス上で任意の図形の描画を行えるCustomPaintを使ってみる | DevelopersIO (classmethod.jp)