[Flutter]SliderをAlertDialogで使えるようにするには?

Flutter

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

SliderをAlertDialogで使えるようにする方法を紹介します。

スポンサーリンク

方法

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

SliderをAlertDialogで使えるようにするには、StatefulBuilderを使います。

具体的には、AlertDialogをStatefulBuilderのの引数「builder」の関数の戻り値にします

StatefulBuilderの引数「builder」に指定する関数の第2引数は、setStateという名前にします。

showDialog(
  context: context,
  builder: (context) {
    return StatefulBuilder(
      builder: (BuildContext context, setState) {
        return AlertDialog(
          content: Slider(
              value: _value,
              onChanged: (newValue) {
                ・・・
             },
          ),
        );
      },
    );
  },
);

StatefulBuilderを使うことで、SliderをAlertDialogで使えるようにすることが出来ます。

使用例

以下は、使用例です。

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  
  double _value = 0.5;

  @override
  Widget build(BuildContext context) {
    return SafeArea(
      child: Scaffold(
        body: Center(
          child: ElevatedButton(
            onPressed: () {
              showDialog(
                context: context,
                builder: (context) {
                  return StatefulBuilder(
                    builder: (BuildContext context, setState) {
                      return AlertDialog(
                        content: SizedBox(
                          height: 100,
                          child: Slider(
                            value: _value,
                            onChanged: (newValue) {
                              setState(() {
                                _value = newValue;
                              });
                            },
                          ),
                        ),
                      );
                    },
                  );
                },
              );
            },
            child: Text('Show'),
          ),
        ),
      ),
    );
  }
}

コメント

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