[Flutter]ModalBottomSheetで画面を再描画するには?

Flutter

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

ModalBottomSheetで画面を再描画する方法を紹介します。

スポンサーリンク

方法

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

ModalBottomSheetで画面を再描画するには、StatefulBuilderを使います。

まず、StatefulBuilderをshowModalBottomSheetの引数「builder」でreturnします。

次に、StatefulBuilderの第1引数に「context」、第2引数に「builder」として「(context, StateSetter setState){}」を指定します。

そして、StatefulBuilderの引数「builder」でModalBottomSheetで表示するウェジェットをreturnします。

showModalBottomSheet(
  context: context,
  builder: (context) {
    return StatefulBuilder(
      builder: (context, StateSetter setState) {
        return ModalBottomSheet();
      },
    );
  },
);

あとは、setState関数を呼び出すことで画面を再描画できます。

setState((){}) //再描画

以下は、使用例です。

使用例
  var _count = 0;
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            showModalBottomSheet(
              context: context,
              builder: (context) {
                return StatefulBuilder(
                  builder: (context, StateSetter setState) {
                    return Center(
                      child: Column(
                        mainAxisSize: MainAxisSize.min,
                        children: [
                          Text('$_count'),
                          TextButton(
                            onPressed: () {
                              setState(() {
                                _count++;
                              });
                            },
                            child: Text('Increment'),
                          )
                        ],
                      ),
                    );
                  },
                );
              },
            );
          },
          child: Text('Show'),
        ),
      ),
    );
  }

コメント

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