【Flutter】CustomPaintの基本とサンプルコード

本記事では、CustomPaintの基本的な使い方とサンプルコード、関連記事を紹介します。

Flutterの公式動画の「Widget of the Week」をベースに日本語で説明しています。

本記事を読むメリット

  • CustomPaintの基本的な使い方や考え方がわかる
  • CustomPaintのサンプルコードを確認できる
  • 関連記事をトピック毎にまとめて確認できる

CustomPaintの基本的な使い方

要約

  • CustomPaintを使うことで、自分で複雑にUIをカスタマイズできる
  • CustomPaintがcanvasを提供し、開発者はそのcanvasを使って自由に描画できる

説明

自分で自由にカスタマイズしたUIを作りたいと思ったことはありませんか?
Flutterでは、低レベルの描画ロジックにもアクセスできます。

例えば、マテリアル・インク・リップル効果(タップしたときに水の波紋が広がるUI効果)も自分で実装することが可能です。

使い方は、まずwidgetツリーにCustomPaint widgetを追加します。

そして、サイズとPainterを指定します。
Painterについてはこの後、説明します。

サイズの指定
Painterの指定

次にPainterを実装します。

CustomPainterをextendsしたクラスを作ってください。

このクラスは2つのメソッドpaintとshouldRepaintを実装する必要があります。

まず、shouldRepaintメソッドについてですが、shouldRepaintメソッドはCustomPainterが再構築されたときに呼び出されます。
開発者はshouldRepaintで再構築前のwidgetを再利用するかどうかをフレームワークに伝えることができ、必要な場合のみ再構築が実行されるようにすることができます。

paintメソッドはcanvasを作る場所で、あなたは様々な方法でcanvasを描くことができます。

例えば、lines、 rectangles、 circles、 arcs(弧)、 paths(複雑な線)、 bitmap、 images、 nine patches、テキストのparagraphなどです。

このcanvasを使うことで、開発者は図形の色、陰影、色の重ね方など、どのように描画するかも自由にコントロールすることができます。

具体的なcanvasの操作方法に関してはFlutter公式の別の動画で紹介されています。
(英語です。すみません。。)

動画

サンプルコード

・円を描くだけのシンプルなサンプルコード
 キャンバスを利用して好きな図形を描画できる CustomPaint の利用

・円、三角形、四角形を描くサンプルコード
 【Flutter】CustomPainterで図形を表示させる【円、三角形、四角形】

関連記事

・Flutter 公式ドキュメント
 CustomPainter class – widgets library – Dart API – Flutter

・関連書籍
 Flutterの基本的な仕組みや周辺知識(テストやCIなど)を網羅的に学べる入門書
 Flutter モバイルアプリ開発バイブル

・その他のwidgetについてはこちら
 カテゴリ-Flutter

 

こちらのプログラミング書籍もおすすめ
(若手プログラマー向け、コーディングのレベルが1段階アップ!)

レガシーコード改善ガイド

  • 特定の言語に限らず、プログラミング初心者で理論から学びたい方におすすめ
  • プログラムに不具合が発生する仕組みや原理を理解できます。
  • その結果、不具合に強いコードが理解でき、書けるようになります。
  • 既存動作を担保しつつ、ソースをリファクタするための方法論を知ることができます。
  • テーマはテストですが、コーディングのレベルアップにも大きく役立ちます

Head First Java 第2版 ―頭とからだで覚えるJavaの基本

  • Javaなどのオブジェクト指向プログラミングの初心者におすすめ
  • 初心者が躓きやすいポイントをわかりやすく解説(インターフェースオブジェクト指向ポリモーフィズムなど)
  • コードをシンプルに保つことができるようになる
  • ポリモーフィズムを利用した、拡張しやすいプログラムをつくることができるようになる。

 

この記事を書いた人

たかお

IT企業で開発者として6年経験を積んだ後、2019年からインドIT企業の日本法人でITコンサルにジョブチェンジ。
 
プログラミングはjava、js、html、cssあたりを仕事で6年くらい。
個人ではFlutterをいじってます。
学んだことを発信していきます。よろしくお願いします!
 
firebaseで簡単なタイピングアプリを作ってみました。
もしよければ遊んでみてください!
1位の記録や管理人(私)の記録と勝負できるようになってます!
 
タイピング・チャレンジャー
https://typing-challenger.com/