Menu
Coddy logo textTech

Dart チートシート

最終更新

Hello World とプログラムの構造

すべての Dart プログラムはトップレベルの main 関数から始まります。

操作構文
エントリポイントvoid main() { ... }
1 行を出力print("Hello, World!");
文字列補間print("Hi $name");
補間内の式print("Sum: ${a + b}");
コメント// this is a comment
複数行コメント/* ... */
ライブラリをインポートimport 'dart:math';
ファイルを実行dart run main.dart

変数と型

Dart は静的型付けですが、var で型を推論できます。

操作構文
推論される変数var age = 30;
明示的な型int age = 30;
コンパイル時定数const pi = 3.14;
実行時定数final name = getName();
基本型int, double, String, bool
動的型dynamic x = 5;
型変換int.parse("42"), n.toString()
型を調べるx is String, x as String

null 安全

型は既定で null 非許容です。null を許すには ? を付けます。

操作構文
null 非許容 (既定)int count = 0;
null 許容の型String? name;
null 考慮のアクセスuser?.name
null 合体name ?? "default"
null 合体代入name ??= "default";
非 null をアサートname!
遅延初期化late String value;
null 考慮のスプレッド[...?maybeList]

文字列

文字列は単一・二重・三連引用符をサポートします。

操作構文
長さs.length
大文字 / 小文字s.toUpperCase(), s.toLowerCase()
補間"Total: $price"
連結"foo" + "bar"
含むかどうかs.contains("ell")
始まる / 終わるs.startsWith("he")
分割"a,b,c".split(",")
置換s.replaceAll("a", "b")
部分文字列s.substring(0, 3)
トリムs.trim()

コレクション (List、Map、Set)

リテラル構文を持つ 3 つの中核コレクション型。

操作構文
リストリテラルvar nums = [1, 2, 3];
リストに追加nums.add(4);
アクセス / 長さnums[0], nums.length
map / wherenums.map((n) => n * 2), nums.where((n) => n > 1)
マップリテラルvar ages = {"Ada": 30};
マップへのアクセスages["Ada"]
集合リテラルvar ids = {1, 2, 3};
スプレッド演算子var all = [...a, ...b];
コレクション if / for[if (show) 1, for (n in xs) n]

制御フロー

条件はかっこで囲み、switch はパターンをサポートします。

操作構文
if / elseif (x > 0) { ... } else { ... }
三項演算子var r = x > 0 ? "pos" : "neg";
switchswitch (n) { case 1: ...; default: ... }
for ループfor (var i = 0; i < 10; i++) { ... }
for-in ループfor (var item in items) { ... }
forEachitems.forEach((x) => print(x));
while ループwhile (x < 100) { ... }
do-whiledo { ... } while (x < 100);
break / continuebreak;, continue;

関数

関数は第一級で、アロー構文は単一の式を短く書けます。

操作構文
関数を定義int add(int a, int b) { return a + b; }
アロー関数int square(int x) => x * x;
省略可能な位置引数void log(String m, [int? code]) { ... }
名前付き引数void box({int w = 0, int h = 0}) { ... }
必須の名前付き引数void box({required int w}) { ... }
無名関数var f = (x) => x * 2;
引数として渡すnums.map((n) => n * 2)
typedeftypedef IntOp = int Function(int);

クラスとコンストラクタ

クラスは状態と振る舞いを持ち、コンストラクタにはいくつかの形があります。

操作構文
クラスを定義class Point { int x; int y; }
コンストラクタPoint(this.x, this.y);
名前付きコンストラクタPoint.origin() : x = 0, y = 0;
インスタンスを生成var p = Point(1, 2);
メソッドdouble dist() { ... }
ゲッターint get area => w * h;
継承class Circle extends Shape { ... }
super を呼ぶsuper(args)
抽象クラスabstract class Shape { ... }
インターフェースを実装class Dog implements Animal { ... }

非同期 (Future / async-await)

Future は後で利用できる値を表し、await は解決するまで一時停止します。

操作構文
非同期関数Future<int> load() async { ... }
Future を awaitvar data = await load();
値を返すreturn 42; (async 関数内で)
遅延await Future.delayed(Duration(seconds: 1));
エラーを処理try { await load(); } catch (e) { ... }
then で連結load().then((v) => print(v));
並列に実行await Future.wait([a(), b()]);
非同期ストリームawait for (var x in stream) { ... }

最もよく使う Dart の構文を 1 ページにまとめました。この Dart チートシートは、言語の中核のクイックリファレンスです。変数と型、null 安全、文字列、コレクション、制御フロー、関数、クラス、そして Flutter の裏側でアプリを書くために使う Future と async/await を収録しています。

ここに載っているものはすべて標準の Dart で、公式 SDK で動きます。必要なものをコピーするか、Dart プレイグラウンドですべてのスニペットをその場で試してみてください。インストールは不要です。

Dart チートシート よくある質問

この Dart チートシートは無料ですか?
はい。この Dart チートシートは完全に無料で、登録も不要です。ブックマークしておけば、null 安全の演算子やコレクションのメソッド、非同期のパターンを調べたいときにいつでも戻ってこられます。
Dart の null 安全はどのように機能しますか?
Dart では、すべての型が既定で null 非許容です。int count は決して null を持てません。null を許すには ? を付け (String? name)、するとコンパイラが null の場合の処理を強制します。ヘルパーがこれを簡潔にします。null 考慮のアクセスには ?.、フォールバック値には ??、確実なときに値が非 null だとアサートするには ! を使います。これにより、null エラーを実行時ではなくコンパイル時に捕捉できます。
Future とは何で、async と await はどう機能しますか?
Future は、ネットワーク呼び出しの結果のように、後で利用できるようになる値を表します。関数に async を付けると await が使えるようになり、await は Future が完了するまで実行を一時停止して値を渡します。つまり、同期コードのように上から下へ読める非同期コードを書けます。await を try/catch で囲むとエラーを処理できます。
Dart をオンラインで練習できますか?
はい。Dart プレイグラウンドを開けば、このチートシートのどのスニペットもブラウザ上で実行できます。SDK のインストールは不要です。体系的に学びたいときは、Coddy の無料インタラクティブ Dart コースが、null 安全とコレクションからクラス、async/await まで段階的に導いてくれます。
このチートシートは初心者に向いていますか?
はい。最もよく使うトピック (変数、null 安全、制御フロー) から高度なもの (クラス、Future、async/await) へと並べてあるので、初日から上のセクションを使い、残りには慣れながら進めます。
Coddy programming languages illustration

CoddyでDartを学ぼう

始める