Как добавить вкладки в диалоговое окно предупреждения во флаттере

У меня есть автономный класс с именем 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;
  }
}

person Karegeya Jean Marie Vianney    schedule 24.07.2020    source источник


Ответы (1)


Не используйте для этой цели «AlertDialog». Используйте класс «Диалог». Внутри него вы можете настроить своего собственного ребенка так, как вам нравится. Привяжите к нему вкладки и события. Обратитесь к этому - https://api.flutter.dev/flutter/material/Dialog-class.html Вы можете использовать 'контейнер' с полем, чтобы получить эффект барьера.

person Braj    schedule 24.07.2020