[Flutter]ボタン(ElevatedButton)のonPressed属性の「() =>」を忘れると何が起こるのか

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

 

Flutterにおけるボタン(ElevatedButton)には、それを押したときにすることを書く場所である「onPressed」属性がありますが、

ElevatedButtonのonPressedに「() => _onButtonPressed()」と書いたコード

この「onPressed」属性を使う際には、ボタンを押したときにすること(呼び出し先の関数)に加えてその前に「() => 」を書く必要があります。

ElevatedButtonのonPressedには「() =>」が必要で、そのあとにボタンを押したときの処理を書く

では、この「() =>」を忘れると何が起こるのでしょうか。

実は、この「() =>」を忘れると、「ボタンを押した時にすること(上の例では_onButtonPressedメソッド)」は、

  • ボタンを押したときではなく、
  • ボタンが描画されたとき(buildメソッドが回ったとき)

に発動されてしまいます。

「() =>」があるときはボタンを押したときに、ないときはボタンが描画されたときに処理が動く

これは意図していない動きなので困った事態なのですが、残念ながら日頃はとても賢いAndroid Studioくんも、これについては文法エラーを指摘してくれないというトラップ的な現象なので、注意が必要です。

ちなみに、この「onPressed」属性の正体は、VoidCallbackといって引数の無い関数となっていて、

Flutter公式ドキュメントのonPressedプロパティ。型はVoidCallback(引数のない関数)

「() =>」は、関数の設計図における引数部分(下の絵でいう③)になっているということは、

Dartでの関数(メソッド)の作り方を6つの要素で説明したスライド

じつは、onPressed属性というのは、「名前の無い関数(無名関数)」であるということがわかります。

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

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

イチオシ

40代から感じるモヤモヤを解消できる 無料動画セミナー

あすコロ式・40代からの人生アップデート【新】戦略

アラフォーでキャリアを失ったバリバリ左脳人間・スピリチュアル耐性ゼロの元金融マンが、人生どん底から立ち上がる過程でたどり着いた「人生再構築メソッド」。40代・50代を過ぎて多くの人が感じる「このままでいいんかな?」「この先どうしたらいいかわからない」というモヤモヤを解消し、人生後半戦をアップデートさせる【新】戦略。

今すぐ無料で動画セミナー(80分)を見る ▶

TOP