参数类型“Future<bool>”不能分配给参数类型“Widget”[Flutter]
Posted
技术标签:
【中文标题】参数类型“Future<bool>”不能分配给参数类型“Widget”[Flutter]【英文标题】:The argument type 'Future<bool>' can't be assigned to the parameter type 'Widget' [Flutter] 【发布时间】:2021-07-06 05:49:13 【问题描述】: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();
您好,我还是 Flutter 的新手,我想尝试在另一个类中制作警报对话框,所以我将其设为可移植类以轻松使用警报。
例如,
我创建了alertDialog.dart
,我想在main.dart
中调用alertDialog.dart
。
但我得到了错误
参数类型“Future”不能分配给参数类型“Widget”
对于警报,我使用了另一个依赖项
rflutter_alert: ^2.0.2
我正在尝试这个,因为我不了解上下文,我总是得到
查找已停用小部件的祖先是不安全的
有什么解决办法吗? 之前谢谢你!
【问题讨论】:
【参考方案1】:函数_alertDialog
返回一个Future
,那么你期待什么呢?您不能在小部件树中使用_alertDialog
,因为它不是小部件而是函数。而是将_alertDialog
调用为按钮的onPressed
属性或类似属性。
我假设,Alert(/*...*/).show();
返回一个未来,因为它正在等待用户响应,例如单击按钮。当() => Navigator.pop(context)
在您的DialogButton
的onPressed
方法中被调用时,未来可能会完成。
【讨论】:
好吧,如果小部件返回 Future显示提醒功能可以作废
void _showAlert(BuildContext context)
showDialog(
context: context,
builder: (context) => AlertDialog(
title: Text("Wifi"),
content: Text("Wifi not detected. Please activate it."),
)
);
【讨论】:
嗯,是的,我确实使用 Future以上是关于参数类型“Future<bool>”不能分配给参数类型“Widget”[Flutter]的主要内容,如果未能解决你的问题,请参考以下文章
根据闭包上下文的要求,返回类型“future<bool>”不是“Future<bool>”
颤振类型错误future <dynamic> 不是future <bool> 类型的子类型
如何使用 Flutter future<bool> 检查 Firestore 中是不是存在子集合