如何在Flutter中将标签添加到警报对话框

时间:2020-07-24 18:31:36

标签: flutter flutter-alertdialog

我有一个名为dialogs.dart的独立类,其中包含一个可重用的警报对话框。我希望此警报对话框具有选项卡,但我不知道如何实现它。任何想法都受到高度赞赏。 这是我的dialogs.dart代码

import 'package:flutter/material.dart';
enum DialogAction{yes,abort}

class Dialogs{
  static int selectedRadio;
  static void setSelectedRadio(int val){
    selectedRadio=val;
  }

  static Future<DialogAction> yesAbortDialog(
      BuildContext context,
      String title,
      String body,
      )async{
    final action= await showDialog(
      context: context,
      barrierDismissible: false,
      builder: (BuildContext context){
        return AlertDialog(
          shape: RoundedRectangleBorder(
            borderRadius: BorderRadius.circular(10),
          ),
          title: Text(title),
          content: StatefulBuilder(
            builder: (BuildContext context, StateSetter setState) {
              return Column(

                mainAxisSize: MainAxisSize.min,
                children: List<Widget>.generate(3, (int index) {
                  return Radio<int>(
                    value: index,
                    groupValue: selectedRadio,
                    onChanged: (int value) {
                      setState(() => selectedRadio = value);
                    },
                  );
                }),
              );

            },
          ),
          actions: <Widget>[
            FlatButton(
              onPressed: ()=>Navigator.of(context).pop(DialogAction.abort),
              child: const Text('cancel'),
            ),
            RaisedButton(
              onPressed: ()=>Navigator.of(context).pop(DialogAction.yes),
              child: const Text('Proceed', style: TextStyle(color: Colors.white),),
              color: Colors.green,
            ),
          ],
        );
      }
    );
    return(action!=null)?action: DialogAction.abort;
  }
}

1 个答案:

答案 0 :(得分:1)

请勿为此目的使用“ AlertDialog”。使用“对话框”类。在其中,您可以按照自己的方式配置自己的孩子。将选项卡和事件关联到它。请参阅-https://api.flutter.dev/flutter/material/Dialog-class.html 您可以使用带有边缘的“容器”来获得屏障效果。