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 / where | nums.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 / else | if (x > 0) { ... } else { ... } |
| 三項演算子 | var r = x > 0 ? "pos" : "neg"; |
| switch | switch (n) { case 1: ...; default: ... } |
| for ループ | for (var i = 0; i < 10; i++) { ... } |
| for-in ループ | for (var item in items) { ... } |
| forEach | items.forEach((x) => print(x)); |
| while ループ | while (x < 100) { ... } |
| do-while | do { ... } while (x < 100); |
| break / continue | break;, 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) |
| typedef | typedef 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 を await | var 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) へと並べてあるので、初日から上のセクションを使い、残りには慣れながら進めます。