【Flutter/Dart】コールバック関数と無名関数の使い方

コールバック関数
目次

コールバック関数とは?

コールバック関数とは、他の関数に引数として渡される関数のことを呼びます。また、コールバック関数を呼び出すことを「コールバック(Callback)」、コールバック関数で使用されている関数を「無名関数」と呼びます。

  • コールバック関数:他の関数の引数となる関数
  • コールバック(Callback):コールバック関数を呼び出すこと
  • 無名関数:コールバック関数に使われる関数

よって、コールバック関数を使用するには無名関数を理解する必要があります。

無名関数(anonymous function)とは?

コールバック・無名関数

無名関数(anonymous function)とは、その名の通り、名前の無い関数「(){ }」のことを呼びます。また、一般的に「関数」と呼ばれているのは、名前つき関数のことを指します。

>> 【Flutter/Dart】関数の使い方|戻り値/引数/キーワード引数/アロー関数

無名関数の定義(引数がない場合)

(){ (実行したい処理) }

名前つき関数の関数名を省けば、無名関数になります。

無名関数の定義(引数がある場合)

(引数){ (実行したい処理) }

関数と同じように無名関数に引数を代入できます。

コールバック関数の例

//FloatingActionButtonを抽出したコード
floatingActionButton: FloatingActionButton(
  child: Icon(Icons.add),
  onPressed: () {
    setState(
      () {
        number += 1;
      },
    );
  },
),

このコードは、下のサンプルコードのFloatingActionButtonの部分を抽出したものです。コードを見るとコールバック関数(VoidCallback)を必要とするonPressedプロパティとsetStateメソッドが2つが使われています。よって無名関数も同じ数だけ必要となります。

それぞれのコールバック関数での処理

  • onPressedでのコールバック:setStateメソッドを実行する無名関数を定義
  • setStateでのコールバック:「number += 1」を実行する無名関数を定義

setStateの詳細はこちら!
>> 【Flutter】StatelessWidgetとStatefulWidgetの使い方!区別&仕組み

サンプルコード

//動画のコード
import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  int number = 0;

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter App'),
        ),
        body: Center(
          child: Text(
            '$number',
            style: TextStyle(
              fontSize: 40,
            ),
          ),
        ),
        floatingActionButton: FloatingActionButton(
          child: Icon(Icons.add),
          onPressed: () {
            setState(
              () {
                number += 1;
              },
            );
          },
        ),
      ),
    );
  }
}
よかったらシェアしてね!
目次
閉じる