NoSuchMethodError:在 null 上调用了方法“ancestorStateOfType”

2024-01-04

我正在像这样的 iam 流列表那样进行屏幕更改,当它发出时我会更改屏幕

 @override
 void initState() {
    super.initState();

     appBloc.error.listen((data) {
     _scaffoldKey.currentState.showSnackBar(new SnackBar(content: new 
        Text(data)));
    });

     appBloc.success.listen((_) => goToDashBoardScreen(context));

}

和 doToDashBoardScreen 看起来像这样

Navigator.pushReplacement(context, new SlideRightRoute(widget: 
DashBoardScreen()));

但我收到这样的错误,但我更改了页面。

22:05:02.446 3 info flutter.tools E/flutter (13216): NoSuchMethodError: 
The method 'ancestorStateOfType' was called on null.
22:05:02.446 4 info flutter.tools E/flutter (13216): Receiver: null
22:05:02.446 5 info flutter.tools E/flutter (13216): Tried calling: 
ancestorStateOfType(Instance of 'TypeMatcher<NavigatorState>')
22:05:02.446 6 info flutter.tools E/flutter (13216): #0      
Object.noSuchMethod (dart:core/runtime/libobject_patch.dart:48:5)
22:05:02.446 7 info flutter.tools E/flutter (13216): #1      
Navigator.of (package:flutter/src/widgets/navigator.dart:1270:19)
22:05:02.446 8 info flutter.tools E/flutter (13216): #2      
Navigator.pushReplacement 
(package:flutter/src/widgets/navigator.dart:952:22)

您的小部件很可能已从树中删除。因此它没有context不再了。

问题是,您忘记取消订阅Stream。因此,即使从树中删除后,您的小部件仍会尝试更新。

解决方案是取消订阅dispose call:

class Foo extends StatefulWidget {
  @override
  _FooState createState() => _FooState();
}

class _FooState extends State<Foo> {
  StreamSubscription streamSubscription;

  @override
  void initState() {
    super.initState();

    streamSubscription = Bloc.of(context).myStream.listen((value) {
      print(value);
    });
  }

  @override
  void dispose() {
    streamSubscription.cancel();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Container();
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NoSuchMethodError:在 null 上调用了方法“ancestorStateOfType” 的相关文章

随机推荐

  • 如何在 UPDATE 语句中使用用户定义的变量?

    我试图回答另一个所以问题 https stackoverflow com questions 18404726并突然面临以下问题 分数应分配给得分最高的 3 个 mrk 组 grp 每个班级 sec 得分最高的组得5分 排名第二的组得3分
  • Hibernate Embedded/Embeddable 不为空异常

    在拥有类中 Embedded private LatLon location 在引用的类中 Embeddable public class LatLon implements Serializable private double lat
  • 使用子查询更新

    我的查询有问题 我有一张巨大的桌子 上面有来自德国的邮政编码 名为 Postleitzahlen 还有另一张名为 Firmen 的公司表 结构是这样的 Firmen ID City State ZipCode Postleitzahlen
  • Tensorflow:在单次运行中分配多个变量值,无需重新计算其他表达式

    我是 Tensorflow 的新手 很抱歉 因为这似乎是一个非常基本的问题 但不幸的是我在 Google 上找不到任何内容 也许我使用了错误的关键字 我有一些从占位符派生的表达式 据我了解张量流的逻辑 以及一些需要在不重新计算 占位符 表达
  • RecyclerView 中的 NullPointEreException

    我尝试从 AsyncTask 中的服务器下载列表并将其放入 recyclerView 中 但是 我仍然在 RecyclerView 上收到 NullPointException 并且不知道为什么 我设置了 LayoutManager 和其他
  • 根据相似度对图像进行聚类

    我面临着基于相似性的图像聚类问题 而不知道聚类的数量 理想情况下 我想实现类似这样的目标http cs231n github io assets cnnvis tsne jpeg http cs231n github io assets c
  • 无法解析相应的jni函数

    我正在制作一个通过串口发送数据的应用程序 这需要从本机库调用方法 我有两个本机方法 打开 关闭 我使用 ndk 生成了 so 库并将它们放入 jnilibs 文件夹中 但仍然给出错误 无法解析相应的 jni 函数 串口 c include
  • 如何使这种组合/排列方法递归?

    我有一个字符串数组列表 希望将所有可能的组合存储到另一个集合中 例如 air bus car gt air bus car air bus air car bus air bus car car air car bus air bus ca
  • 如何监视另一个应用程序的数据库的更改?

    我想监视另一个应用程序 SQLite 数据库的更改 由于 Android 不允许我访问其他应用程序的内部数据 因此我需要一个根应用程序 这正是我的应用程序 有没有办法可以监视系统上文件的更改并在我的应用程序中触发事件 我用谷歌搜索了一下 看
  • jQuery 颜色选择器推荐 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我需要非常轻的 jquery 颜色选择器插件 它允许用户将鼠标拖动到色轮上 并能够选择透明颜色 或 空白 无 有什么建议么 我从谷歌得到了
  • 如何简洁地编写包含数据框中许多变量的公式?

    假设我有一个响应变量和一个包含三个协变量的数据 作为玩具示例 y c 1 4 6 d data frame x1 c 4 1 3 x2 c 3 9 8 x3 c 4 4 2 我想对数据进行线性回归 fit lm y d x1 d x2 d
  • 如何在当前机器上运行jvm

    想象一下 两个 java 项目在 JDK1 5 和 JDK1 6 上运行 其中两个是在 JDK 1 7 上工作的 如何获取正在运行的jvm名称 pid和项目名称就可以了 结果应该是这样的 pid 1234 projec tname prj1
  • iOS:失去蓝牙连接

    我成功地使用蓝牙连接了 iPhone 和 Mac iPhone 是中心 Mac 是外围 连接后 两者可以通信 iPhone 订阅了 Mac 宣传的一些特性 但是 一段时间 随机 之后 iPhone 的蓝牙图标变灰 并且 iPhone 不再接
  • 调用未定义的方法 Illuminate\Foundation\Application::bindShared()

    我刚刚将 Laravel 从 5 0 升级到 5 1 我收到此错误 Call to undefined method Illuminate Foundation Application bindShared 因此 经过一番搜索后 我需要将b
  • 内置变量中的可变默认参数

    我们都知道 可怕的可变默认参数 https stackoverflow com questions 1132941 least astonishment and the mutable default argument 我惊讶地发现至少有一
  • 使用非 SQL 数据库是否就无需防范“SQL 注入”?

    这似乎是一个显而易见 或不那么明显 的问题 但让我解释一下 我正在使用 Google 的数据库技术 BigTable 编写 Google App Engine 网站 任何 App Engine 程序员都会知道 Google 有自己的有限查询
  • 在 Git Web hook 之后重新启动 Plesk 17.5 上的 Node 应用程序

    目前 我在 Plesk 17 5 中的一个非常基本的 NodeJS 服务器上设置了自动 Git 部署 问题是 如果我推送新的提交 我需要手动登录 Plesk 仪表板并单击 重新启动应用程序 否则更改不会生效 我尝试添加npm start作为
  • 关于在画布上显示照片是否存在已知的 Win32 Tkinter 错误?

    我注意到 tkinter 有一个非常奇怪的错误 我想知道这是否是因为 python 与 tcl 交互的方式有问题 至少在 Win32 中是这样 这里我有一个超级简单的程序 可以显示 gif 图像 它工作完美 from Tkinter imp
  • 如何将优先级升级到log4j-2?

    我正在尝试将 log4j 升级到 log4j2 我尝试升级的特定代码行是 log targetClass Priority DEBUG INT message null 静态场Priority DEBUG INT在新版本中不再可用Prior
  • NoSuchMethodError:在 null 上调用了方法“ancestorStateOfType”

    我正在像这样的 iam 流列表那样进行屏幕更改 当它发出时我会更改屏幕 override void initState super initState appBloc error listen data scaffoldKey curren