如何在 flutter 中将选项卡添加到警报对话框
How to add tabs to an alert dialog in flutter
我有一个名为 dialogs.dart 的独立 class,其中包含一个可重复使用的警报对话框。我希望这个警告对话框有选项卡,但如果可能的话我不知道如何实现它。任何想法都受到高度赞赏。
这是我的 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;
}
}
不要将 'AlertDialog' 用于此目的。使用 'Dialog' class。在其中,您可以按照自己喜欢的方式配置自己的 child。将选项卡和事件绑定到它。参考这个 - https://api.flutter.dev/flutter/material/Dialog-class.html
您可以使用 'container' with margin 来获得屏障效果。
我有一个名为 dialogs.dart 的独立 class,其中包含一个可重复使用的警报对话框。我希望这个警告对话框有选项卡,但如果可能的话我不知道如何实现它。任何想法都受到高度赞赏。 这是我的 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;
}
}
不要将 'AlertDialog' 用于此目的。使用 'Dialog' class。在其中,您可以按照自己喜欢的方式配置自己的 child。将选项卡和事件绑定到它。参考这个 - https://api.flutter.dev/flutter/material/Dialog-class.html 您可以使用 'container' with margin 来获得屏障效果。