Firebase 参数类型';未来<;布尔>';can';不能分配给参数类型';小部件';[颤振]

Firebase 参数类型';未来<;布尔>';can';不能分配给参数类型';小部件';[颤振],firebase,flutter,widget,future,Firebase,Flutter,Widget,Future,您好,我在颤振方面还是新手,我想尝试在另一个类中创建警报对话框,这样我就可以使它成为可移植类,以便轻松使用警报 比如说,, 我创建了alertDialog.dart,我想在main.dart中调用alertDialog.dart。 但我犯了个错误 无法将参数类型“Future”分配给参数类型“Widget” 对于警报,我使用另一个Dependencies Future _alertDialog(BuildContext context, {String isi, AlertType alert}

您好,我在颤振方面还是新手,我想尝试在另一个类中创建警报对话框,这样我就可以使它成为可移植类,以便轻松使用警报

比如说,, 我创建了
alertDialog.dart
,我想在
main.dart
中调用
alertDialog.dart
。 但我犯了个错误

无法将参数类型“Future”分配给参数类型“Widget”

对于警报,我使用另一个Dependencies

Future _alertDialog(BuildContext context, {String isi, AlertType alert}) {
return Alert(
  context: context,
  type: alert,
  title: "Notification",
  desc: "Laporan telah masuk, silahkan menunggu email dari admin!",
  buttons: [
    DialogButton(
      child: Text(
        "OKAY",
        style: TextStyle(color: Colors.white, fontSize: 20),
      ),
      onPressed: () => Navigator.pop(
        context,
      ),
      width: 120,
    )
  ],
).show();
}
我试着这样做是因为我不了解上下文,我总是

查找停用小部件的祖先是不安全的

有什么解决办法吗?
谢谢你

函数
\u alertDialog
返回一个
未来的
,那么您希望得到什么呢?您不能在小部件树中使用
\u alertDialog
,因为它不是小部件而是函数。相反,调用
\u alertDialog
作为按钮或类似对象的
onPressed
属性


我假设,
Alert(/*…*/).show()返回未来,因为它正在等待用户响应,如单击按钮。当在
对话框按钮的
onPressed
方法中调用
()=>Navigator.pop(context)
时,未来可能会完成,显示警报功能的

可能会无效

rflutter_alert: ^2.0.2

好吧,如果小部件将来返回,我确实理解这一点,但我认为它将更便于移植,然后在我拥有的每个文件中创建alertDialog,就像在main.dart中创建新警报一样,在另一个屏幕中创建新警报。所以我想如果我能把它变成一个新的文件,那么它会非常有用。你完全正确,在不同的文件中移动小部件和相关方法也是一种更好的方式。老实说,我只是不明白为什么它仍然不起作用。如果在按钮的onPressed处理程序中调用_-alertDialog(/*…*/),是否仍然会出错?是的,我使用Future,或者只使用名称,如_-showAlert(BuildContext上下文),但没有任何方法名称,但感谢您的回答!
void _showAlert(BuildContext context) {
      showDialog(
          context: context,
          builder: (context) => AlertDialog(
            title: Text("Wifi"),
            content: Text("Wifi not detected. Please activate it."),
          )
      );
    }