带有许多按钮的自定义对话框 Flutter

Custom Dialog Flutter with many buttons

我想做的是创建一个带有许多按钮的自定义对话框, 当用户按下按钮时,我的目标是关闭自定义对话框并知道按下了哪个按钮(以便使用提供程序刷新我的主页)

我用 2 个按钮定义自定义对话框(例如)。我怎样才能实现我的目标?

也就是代码:

CustomDialog.dart

import 'package:flutter/material.dart';
class CustomDialog extends StatelessWidget {

  dialogContent(BuildContext context) {
    return Container(
      decoration: new BoxDecoration(
        color: Colors.white,
        shape: BoxShape.rectangle,
        borderRadius: BorderRadius.circular(10),
        boxShadow: [
          BoxShadow(
            color: Colors.black26,
            blurRadius: 10.0,
            offset: const Offset(0.0, 10.0),
          ),
        ],
      ),
      child: Column(
        mainAxisSize: MainAxisSize.min, // To make the card compact
        children: <Widget>[
          RaisedButton(
            onPressed: (){},
            child: Text("Button 1"),
          ),

          RaisedButton(
            onPressed: (){},
            child: Text("Button 2"),
          ),
        ],
      ),
    );
  }

  @override
  Widget build(BuildContext context) {
    return Dialog(
      shape: RoundedRectangleBorder(
        borderRadius: BorderRadius.circular(10),
      ),
      elevation: 0.0,
      backgroundColor: Colors.transparent,
      child: dialogContent(context),
    );
  }
}


在main.dart中我称它为:

Container(
              child: Center(
                child: RaisedButton(
                  onPressed: (){
                    showDialog(context: context,
                        builder: (BuildContext context){
                          return CustomDialog(

                          );
                        }
                    );
                  },
                  child: Text("Custom Dialog"),
                ),
              ),
            ),

可以从对话框中return将值返回到打开的位置

首先,打开对话框时必须等待值

 return Container(
      child: Center(
        child: RaisedButton(
          onPressed: () async {
            var pressedButtonNumber = await showDialog<int>(
                context: context,
                builder: (BuildContext context) {
                  return CustomDialog();
                });

            print(pressedButtonNumber);
          },
          child: Text("Custom Dialog"),
        ),
      ),
    );
  }

然后你必须return关闭对话框时的值

          RaisedButton(
            onPressed: () {
              Navigator.of(context).pop(1);
            },
            child: Text("Button 1"),
          ),

我是这样解决的:

showDialog(context: context,
                    builder: (BuildContext context){
                      return CustomDialog(

                      );
                    }
                ).then((value) {

                });

在自定义对话框中:

Navigator.pop(context, //** RETURNED VALUE**//);