话不多说,直接上代码
第一种: 从底部弹出的选项
第二种: 从中间弹出的提示框
第三种: 从中间弹出的输入框
PS:把3段代码都放出来了,直接使用就好。 不知道为什么图片这么大,见谅哈哈哈
class AppTool {
/// 底部弹出2个选项框
showBottomAlert(BuildContext context, confirmCallback, String title,
String option1, String option2) {
showCupertinoModalPopup(
context: context,
builder: (context) {
return ShowCustomAlterWidget(
confirmCallback, title, option1, option2);
});
}
/// 中间弹出提示框
showCenterTipsAlter(BuildContext context,confirmCallback,String title, String desText) {
showDialog(
context: context,
builder: (BuildContext context) {
return ShowTipsAlterWidget(confirmCallback, title, desText);
});
}
/// 中间弹出输入框
showCenterInputAlert(BuildContext context,confirmCallback,String title,String placeholder) {
showDialog(
context: context,
builder: (BuildContext context) {
return ShowInputAlertWidget(confirmCallback, title,placeholder);
});
}
}
class ShowInputAlertWidget extends StatefulWidget {
final confirmCallback;
final title;
final placeholder;
const ShowInputAlertWidget(
this.confirmCallback, this.title,this.placeholder);
@override
_ShowInputAlertWidgetState createState() => _ShowInputAlertWidgetState();
}
class _ShowInputAlertWidgetState extends State<ShowInputAlertWidget> {
String inputValue = '';
@override
Widget build(BuildContext context) {
return CupertinoAlertDialog(
title: Text(widget.title),
content: Column(
children: <Widget>[
CupertinoTextField(placeholder: widget.placeholder,onChanged: (value){
inputValue = value;
},)
],
),
actions: <Widget>[
CupertinoDialogAction(
child: Text("取消"),
onPressed: () {
Navigator.pop(context);
},
),
CupertinoDialogAction(
child: Text("确定"),
onPressed: () {
widget.confirmCallback(inputValue);
Navigator.pop(context);
},
),
],
);
}
}
class ShowTipsAlterWidget extends StatefulWidget {
final confirmCallback;
final title;
final desText;
const ShowTipsAlterWidget(
this.confirmCallback, this.title, this.desText);
@override
_ShowTipsAlterWidgetState createState() => _ShowTipsAlterWidgetState();
}
class _ShowTipsAlterWidgetState extends State<ShowTipsAlterWidget> {
@override
Widget build(BuildContext context) {
return CupertinoAlertDialog(
title: Text(widget.title),
content: Column(
children: <Widget>[
SizedBox(
height: 10,
),
Align(
child: Text(widget.desText),
alignment: Alignment(0, 0),
),
],
),
actions: <Widget>[
CupertinoDialogAction(
child: Text("取消"),
onPressed: () {
Navigator.pop(context);
},
),
CupertinoDialogAction(
child: Text("确定"),
onPressed: () {
widget.confirmCallback('确定');
Navigator.pop(context);
},
),
],
);
}
}
class ShowCustomAlterWidget extends StatefulWidget {
final confirmCallback;
final title;
final option1;
final option2;
const ShowCustomAlterWidget(
this.confirmCallback, this.title, this.option1, this.option2);
@override
_ShowCustomAlterWidgetState createState() => _ShowCustomAlterWidgetState();
}
class _ShowCustomAlterWidgetState extends State<ShowCustomAlterWidget> {
final controller = TextEditingController();
String inputValuue = "";
@override
Widget build(BuildContext context) {
return CupertinoActionSheet(
title: Text(
widget.title,
style: TextStyle(fontSize: 22),
),
actions: <Widget>[
CupertinoActionSheetAction(
onPressed: () {
Navigator.pop(context);
widget.confirmCallback(widget.option1);
},
child: Text(widget.option1),
),
CupertinoActionSheetAction(
onPressed: () {
Navigator.pop(context);
widget.confirmCallback(widget.option2);
},
child: Text(widget.option2),
),
],
cancelButton: CupertinoActionSheetAction(
onPressed: () {
Navigator.pop(context);
},
child: Text('取消'),
),
);
}
}
使用方法:
有问题的可以联系我哈。