未处理的异常:NoSuchMethodError:方法'showNotificationDaily'在flutter中被调用为null

Posted

技术标签:

【中文标题】未处理的异常:NoSuchMethodError:方法\'showNotificationDaily\'在flutter中被调用为null【英文标题】:Unhandled Exception: NoSuchMethodError: The method 'showNotificationDaily' was called on null in flutter未处理的异常:NoSuchMethodError:方法'showNotificationDaily'在flutter中被调用为null 【发布时间】:2021-11-11 09:15:02 【问题描述】:

我正在尝试实现本地通知,但我遇到了 NoSuchMethodError,我已经调试了代码并找到了问题,但没有找到正确的解决方案。 我在 AddNotification.dart Stateful 类中创建了我这样称呼它的通知管理器类

 final NotificationManager manager;
  const AddNotification(this.manager);

然后在它的 State 类中这样调用它:

widget.manager.showNotificationDaily(1, "Asar", "isNotification", hour, minute);

在调用 AddNotification 的上一个类中,我发送了一个这样的通知管理器对象。

class AllSurah extends StatefulWidget 
  NotificationManager manager;
  @override
  _AllSurahState createState() => _AllSurahState();

    Navigator.push(
                    context,
                    MaterialPageRoute(builder: (context) => AddNotification(widget.manager)),
                  );

我已经调试了代码,发现管理器正在从传递 NotificationManger 对象的上一个类传递 null。我该如何解决这个问题?

【问题讨论】:

这能回答你的问题吗? What is a NoSuchMethod error and how do I fix it? 【参考方案1】:

试试下面的代码:

 NotificationManager manager = new NotificationManager();

【讨论】:

【参考方案2】:

问题不在于您没有将变量传递给对象。而是问题在于,当您在其上调用 showNotificationDaily 时,manager 变量为空,这会引发您看到的异常。

您可以使用 Null Aware Operator ( ? ) 避免 Null Exceptions,如下所示:

widget.manager?.showNotificationDaily(1, "Asar", "isNotification", hour, minute);

但这只会避免Exception 被抛出。你真的应该调查一下为什么这个变量被传递为null

【讨论】:

以上是关于未处理的异常:NoSuchMethodError:方法'showNotificationDaily'在flutter中被调用为null的主要内容,如果未能解决你的问题,请参考以下文章

获取“未处理的异常:NoSuchMethodError:方法'map'在null上被调用”

未处理的异常:NoSuchMethodError:方法“findAncestorStateOfType”在 null 上被调用

Flutter,无法提取 api 数据:(未处理的异常:NoSuchMethodError:方法 'map' 在 null 上被调用。)

未处理的异常:NoSuchMethodError:在 null 上调用了方法“[]”(json 解析)

未处理的异常:NoSuchMethodError:在 null 上调用了方法“toRawHandle”

未处理的异常:NoSuchMethodError:在 null 上调用了方法“[]”。尝试调用:[](“is_ordered”)。检查空字段 Firebase [重复]