Flutter 雑学「もしnullだったら代わりの値を使う」 という便利な記号

普通の書き方:

dartString name = userName;
if (name == null) {
name = 'ゲスト';
}


Dartのスマートな書き方:

dartString name = userName ?? 'ゲスト';
たった1行! 読み方は「userName が null だったら『ゲスト』を使う」です。

もっと便利な使い方:

dart// ユーザー名 → ニックネーム → メールアドレス → 「名無し」の順で使う
String displayName = user.name ?? user.nickname ?? user.email ?? '名無し';

複数の ?? を繋げられます!

目次

仲間の ?. 演算子

通に書くとこうなる:もし user が null だったら、エラーにならずに null を返す

String? email;
if (user != null) {
email = user.email;
}

Dartのスマートな書き方:

String? email = user?.email;

?? と ?. を使うと、null チェックがスッキリ! 明日からコードがカッコいい✨

?. 演算子、これは「安全に中身を取り出す」魔法

例え:財布の中の小銭を数えたい

int coins = wallet.coins; // 財布の中の小銭を取る

でも、もし財布を持ってなかったら? → エラー!

安全なやり方 (?. を使う):

int? coins = wallet?.coins; // 財布があれば小銭を取る、なければnull

財布がなくても大丈夫! エラーにならず、「coins は null」になります。

もっと実用的な例

// ユーザーがログインしているかわからない状況

User? currentUser = getCurrentUser(); // null かもしれない

// 普通に書くと…

String? email;
if (currentUser != null) {
email = currentUser.email; // ← 3行必要
} else {
email = null;
}

// ?. を使うと…

String? email = currentUser?.email; // ← 1行で済む!

この ? は「null かもしれない」という意味

  • String → 必ず文字列がある
  • String? → 文字列 または null

さらに連鎖できる!

会社 → 部署 → マネージャー → 名前 を安全に取得したい!!

String? managerName = company?.department?.manager?.name;

どこかが null でも大丈夫!
company が null → managerName は null
department が null → managerName は null
manager が null → managerName は null

一言で言うと: ?. は「もし null だったら、エラーにせず null を返してね」というありがたい記号です

目次