如何在flutter中将上下文传递给子窗口小部件

时间:2020-01-16 04:46:26

标签: flutter

我有一个有状态的小部件W1,它调用无状态的小部件W2

W2具有onTap功能。我想在W2's onTap()中显示一个警告对话框。

onTap:() {Alert(context: context, title:'Hi');},

我没有收到任何错误,但是在点击时没有显示警报。我尝试将上下文作为参数传递给W2,但仍然看不到任何对话框。 从W2中显示对话框的正确方法是什么? 我正在使用rflutter_alert软件包Link

谢谢

3 个答案:

答案 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的问题,如果您正在创建StatelessStateful小部件,则不需要传递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');},