gpt4 book ai didi

flutter - 是否可以在 Flutter 中将类作为参数传递给函数?

转载 作者:行者123 更新时间:2023-12-03 13:28:56 26 4
gpt4 key购买 nike

在这里,我有一个实用程序类,其中有一个用于显示 DialogBox 的函数,所以我正在尝试制作一个 AlertDialog Box,它可以在整个项目的任何地方使用。
所以,我必须将标题、描述作为参数传递,并且还想传递类名,以便在按下警报对话框内的按钮时我们可以导航到该屏幕

class DialogBox {
static DialogBox dialogBox = null;

static DialogBox getInstance() {
if (dialogBox == null) {
dialogBox = DialogBox();
}
return dialogBox;
}

showAlertDialog(BuildContext context, String alertTitle, String alertMessage) {
showDialog(
context: context,
barrierDismissible: false,
builder: (context) {
return AlertDialog(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(15.0),
),
title: Center(child: Text(alertTitle)),
content: Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
Text(
alertMessage,
textAlign: TextAlign.center,
),
Row(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.end,
children: <Widget>[
FlatButton(
child: Center(
child: Text(
'Ok',
textAlign: TextAlign.center,
)),
onPressed: () {
Navigator.of(context).pop();
// Navigator.of(context).push(MaterialPageRoute(
// builder: (BuildContext context) {
// return Home();//Intead of giving Home() anything can be passed here
// }));
},
),
])
],
),
);
});
}
}
现在我只是一直关闭对话框,但我想导航到另一个类。

最佳答案

传递类名是一个坏主意——类可以要求构造函数的参数,它不是类型安全的,并且需要反射,而 Flutter 不支持。

您可以改为传递一个函数来创建所需类型的小部件:

showAlertDialog(
BuildContext context,
String alertTitle,
String alertMessage,
Widget Function() createPage,
) {

// ...
onPressed: () {
Navigator.of(context).pop();
Navigator.of(context).push(MaterialPageRoute(
builder: (BuildContext context) {
return createPage();
}));
},

// ...
}

并称之为例如像这样:

showAlertDialog(context, title, message, () => Home())

关于flutter - 是否可以在 Flutter 中将类作为参数传递给函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58522253/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com