0

我有一个名为 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;
  }
}
4

1 回答 1

1

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

于 2020-07-24T18:45:31.350 回答