[Flutter]AlertDialogを閉じた時にイベントを起こす方法

Flutter

どうも、ちょげ(@chogetarou)です。

AlertDialogを閉じた時にイベントを起こす法を紹介します。

スポンサーリンク

方法

インターフェース, インターネット, プログラム, ブラウザ, Www, グラフィック, フラットなデザイン

AlertDialogを閉じた時に処理をする方法は、2つあります。

WillPopScope

1つは、「WillPopScope」を使う方法です。

まず、showDialogで表示するAlertDialogを、「WillPopScope」の「child」に指定します。

そして、WillPopScopの引数「onWillPop」に閉じた時のイベントを設定します。

showDialog(
  context: context,
  builder: (context) {
    return WillPopScope(
      child: AlertDialog(
        title: Text('Alert'),
      ),
      onWillPop: () async {
       //閉じた時の処理
        setState(() {
          _count++;
        });
        return true;
      },
    );
  },
);

onWillPopには、関数を指定します。

指定する関数の戻り値は、Future<bool>型で、基本的には「true」を返せば大丈夫です。(falseを指定すると画面が閉じなくなります)

また、直接関数を指定する場合は、「async」を指定します。

then

もう1つは、「then」を使う方法です。

showDialog関数の後に、「.then((value) {})」を付け足します。

そして、「then()」内の関数で、閉じた時のイベントを指定します。

showDialog(
  context: context,
  builder: (context) {
    return AlertDialog(
      title: Text('Alert'),
    );
  },
).then((value) {
  //閉じた時の処理
  setState(() {
    _count++;
  });
});

「then」は、非同期処理の1つです。

「then」を使うと、「showDialog」の処理が終わった時、言い換えると画面を閉じた時に処理を行うことが出来ます。

まとめ

「AlertDialog」を閉じる時の処理をする方法は、次の2つです。

  • WillPopScopを使う方法
  • thenを使う方法

コメント

タイトルとURLをコピーしました