我有一个有状态的小部件W1
,它调用无状态的小部件W2
。
W2
具有onTap
功能。我想在W2's onTap()
中显示一个警告对话框。
onTap:() {Alert(context: context, title:'Hi');},
我没有收到任何错误,但是在点击时没有显示警报。我尝试将上下文作为参数传递给W2
,但仍然看不到任何对话框。
从W2
中显示对话框的正确方法是什么?
我正在使用rflutter_alert软件包Link
谢谢
答案 0 :(得分:1)
您必须用Alert(context: context, title:'Hi');
来包裹showDialog(context: context, builder: (BuildContext context) => Alert(context: context, title:'Hi'));
这是食谱样本:
Future<void> _neverSatisfied() async {
return showDialog<void>(
context: context,
barrierDismissible: false, // user must tap button!
builder: (BuildContext context) {
return AlertDialog(
title: Text('Rewind and remember'),
content: SingleChildScrollView(
child: ListBody(
children: <Widget>[
Text('You will never be satisfied.'),
Text('You\’re like me. I’m never satisfied.'),
],
),
),
actions: <Widget>[
FlatButton(
child: Text('Regret'),
onPressed: () {
Navigator.of(context).pop();
},
),
],
);
},
);
}
无论如何,对于有关如何传递context
的问题,如果您正在创建Stateless
或Stateful
小部件,则不需要传递context
,就可以来自build(BuildContext context) {}
。
答案 1 :(得分:0)
最后添加.show()
即可解决。
onTap:() {Alert(context: context, title:'Hi').show();}
它清楚地记录在rflutter_alert包中,但我不知何故错过了它。
答案 2 :(得分:-1)
在onTap中的函数调用中传递上下文:
onTap:(context) {Alert(context: context, title:'Hi');},