[Flutter]「ValueChanged?(DropdownButton#onChanged属性)」にはなぜ「?」が2つあるのか?

このページには広告が含まれる場合があります。

 

Flutterで、下にベローンと表示される選択肢である「DropdownButton」というウィジェットがあります。

blank

この「DropdownButton」内の選択肢が変更された際には、「onChanged」属性で設定したコールバック関数が呼ばれますが、

blank

この「onChanged」属性のソースコードをみると、なんと「Null許容」を示す「?」が2つあって、「なんじゃこりゃぁ~!」という感じになっています。

blank

「ValueChanged<T?>?」については

  1. ValueChanged? の部分と(1つめの「?」)
  2. <T?> の部分(2つめの「?」)

に分けて考えるとわかりやすくなります。

 

1つめの「?」(ValueChanged? の部分)は「ValueChangedがNullの可能性がある」

1つめの「?」(ValueChanged? の部分)は

ValueChangedがNullの可能性がある=onChanged属性がNullの可能性がある

という、Nullになる可能性があるものは型のうしろに「?」を つけるという、普通のNull許容の考え方と同じです。

blank

 

2つめの「?」(<T?>)は「コールバック関数の引数がNullになる可能性がある」

一方、2つめの「?」の部分(<T?>)については、

onChanged属性のコールバック関数の引数がNullになる可能性がある

ことを意味しています。

つまり、ValueChangedはFunction(T value)であるため、その実態は引数が1つだけある関数を意味しており、Tは関数の引数の型として使われていることから、ValueChanged?の正しい理解は

  • ValueChangedは引数を1つだけ持つ関数(Function(T value))であり
  • 「T」はその関数に入れる引数(value)の型
  • その「T」に「?」がついているということは、関数の引数(value)がNullになるかもしれない

ということになります。

(詳しくは、以下の動画で解説していますので、よろしければご覧下さい)

(注)以下のフォームより当社公式メールマガジンにご登録頂くことで
約6時間のFlutter動画講座が無料で受講できます!

(メールマガジンは登録無料・いつでも解除可)

[体験版]
ゼロからのFlutter
(Flutter初級編) 

 

【体験版講座に含まれるもの】
・約70本・約6時間の動画テキスト
・1つの課題アプリのソースコード
・Flutterアプリを作るための「環境構築ライブサポート(Google Meet)」
(「体験版」は全30時間超の「製品版」の約1/6を抜粋した講座です。「製品版」の詳細はこちらから)

 

【当社公式メルマガご登録6大特典】
blank

\約6時間動画講座を無料プレゼント!/
今すぐ無料体験版に申し込む ▶
無料メルマガ登録で講座割引クーポンなど6大特典ゲット!

こんな記事も読まれています

今すぐプレゼントを受け取る(約6時間のFlutter初級編体験版動画講座を無料でプレゼント)
blank

はじめての方へ

blank
みんプロ式プログラミング講座体系・ラインナップ
みんプロ式プログラミング講座受講の流れ(割引特典利用方法)
サイトマップ(みんプロHPコンテンツ一覧)
運営会社概要

みんプロ作成アプリ

blank
blank
blank
blank
blank

みんプロ式動画講座(コア・Flutter)

ゼロからのFlutter(初級編)-はじめてのプログラミングからアプリリリースまで-
Flutter中級編1-Web通信・設計・状態管理・DIの基礎-
Flutter中級編2-Firebase/地図・カメラ連携等の基礎-
Flutter中級編3-広告/アプリ内課金等の基礎-
Flutter中級編4-Webアプリとレスポンシブデザインの基礎-

みんプロ式動画講座(サテライト)

Flutter/Dartトラブルシューティング・小ネタ集(コア初級編受講で無料プレゼント)
ゼロからのGit・GitHub(コマンドラインツールを極力使わないバージョン管理入門)
Flutter/Dartにおける設計・状態管理・DIの解説集
Dart逆引き大辞典
Flutterにおけるテストの基礎
blank
blank

今すぐプレゼントを受け取る(約6時間のFlutter初級編体験版動画講座を無料でプレゼント)
TOP