Flutter异常 NoSuchMethodError The getter focusScopeNode was called on null

本文主要是介绍Flutter异常 NoSuchMethodError The getter focusScopeNode was called on null,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在启动新页面是出现异常:

 [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: NoSuchMethodError: The 
getter 'focusScopeNode' was called on null.
E/flutter (26425): Receiver: null    
E/flutter (26425): Tried calling: focusScopeNode
E/flutter (26425): #0      Object.noSuchMethod (dart:core-patch/object_patch.dart:53:5)
E/flutter (26425): #1      Route.didPush.<anonymous closure> (package:flutter/src/widgets/navigator.dart:139:17)  

错误代码:

 void _onPass(){Navigator.push(context, MaterialPageRoute(builder: (context){return DetailPage();}));Navigator.pop(context);}

出现异常的原因是在刚push界面之后,不能立即调用Navigator.pop(context),

Navigator.pop方法看源码声明:

/// Pop the top-most route off the navigator.////// {@macro flutter.widgets.navigator.pop}////// {@tool sample}////// Typical usage for closing a route is as follows:////// ```dart/// void _handleClose() {///   navigator.pop();/// }/// ```/// {@end-tool}/// {@tool sample}////// A dialog box might be closed with a result:////// ```dart/// void _handleAccept() {///   navigator.pop(true); // dialog returns true/// }/// ```/// {@end-tool}@optionalTypeArgsbool pop<T extends Object>([ T result ]) {assert(!_debugLocked);assert(() {_debugLocked = true;return true;}());

可以将页面路由当做一个栈,在刚push进去一个页面时,

立即调用Navigator.pop(context)会将栈顶的页面删除,此时push的页面就不能正常启动,会报上述异常

看源码,官方给的推荐用法:

/// The state from the closest instance of this class that encloses the given context.////// Typical usage is as follows:////// ```dart/// Navigator.of(context)///   ..pop()///   ..pop()///   ..pushNamed('/settings');/// ```////// If `rootNavigator` is set to true, the state from the furthest instance of/// this class is given instead. Useful for pushing contents above all subsequent/// instances of [Navigator].

修改之后代码:

void _onPass(){Navigator.of(context)..pop()..push(MaterialPageRoute(builder: (context){return DetailPage();}));}

或者

 void _onPass(){Navigator.pop(context);Navigator.push(context, MaterialPageRoute(builder: (context){return DetailPage();}));}

 

这篇关于Flutter异常 NoSuchMethodError The getter focusScopeNode was called on null的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1012174

相关文章

Flutter打包APK的几种方式小结

《Flutter打包APK的几种方式小结》Flutter打包不同于RN,Flutter可以在AndroidStudio里编写Flutter代码并最终打包为APK,本篇主要阐述涉及到的几种打包方式,通... 目录前言1. android原生打包APK方式2. Flutter通过原生工程打包方式3. Futte

Java异常架构Exception(异常)详解

《Java异常架构Exception(异常)详解》:本文主要介绍Java异常架构Exception(异常),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. Exception 类的概述Exception的分类2. 受检异常(Checked Exception)

Java报NoClassDefFoundError异常的原因及解决

《Java报NoClassDefFoundError异常的原因及解决》在Java开发过程中,java.lang.NoClassDefFoundError是一个令人头疼的运行时错误,本文将深入探讨这一问... 目录一、问题分析二、报错原因三、解决思路四、常见场景及原因五、深入解决思路六、预http://www

一文带你深入了解Python中的GeneratorExit异常处理

《一文带你深入了解Python中的GeneratorExit异常处理》GeneratorExit是Python内置的异常,当生成器或协程被强制关闭时,Python解释器会向其发送这个异常,下面我们来看... 目录GeneratorExit:协程世界的死亡通知书什么是GeneratorExit实际中的问题案例

Java捕获ThreadPoolExecutor内部线程异常的四种方法

《Java捕获ThreadPoolExecutor内部线程异常的四种方法》这篇文章主要为大家详细介绍了Java捕获ThreadPoolExecutor内部线程异常的四种方法,文中的示例代码讲解详细,感... 目录方案 1方案 2方案 3方案 4结论方案 1使用 execute + try-catch 记录

Flutter监听当前页面可见与隐藏状态的代码详解

《Flutter监听当前页面可见与隐藏状态的代码详解》文章介绍了如何在Flutter中使用路由观察者来监听应用进入前台或后台状态以及页面的显示和隐藏,并通过代码示例讲解的非常详细,需要的朋友可以参考下... flutter 可以监听 app 进入前台还是后台状态,也可以监听当http://www.cppcn

解决java.lang.NullPointerException问题(空指针异常)

《解决java.lang.NullPointerException问题(空指针异常)》本文详细介绍了Java中的NullPointerException异常及其常见原因,包括对象引用为null、数组元... 目录Java.lang.NullPointerException(空指针异常)NullPointer

mybatis和mybatis-plus设置值为null不起作用问题及解决

《mybatis和mybatis-plus设置值为null不起作用问题及解决》Mybatis-Plus的FieldStrategy主要用于控制新增、更新和查询时对空值的处理策略,通过配置不同的策略类型... 目录MyBATis-plusFieldStrategy作用FieldStrategy类型每种策略的作

Spring Boot统一异常拦截实践指南(最新推荐)

《SpringBoot统一异常拦截实践指南(最新推荐)》本文介绍了SpringBoot中统一异常处理的重要性及实现方案,包括使用`@ControllerAdvice`和`@ExceptionHand... 目录Spring Boot统一异常拦截实践指南一、为什么需要统一异常处理二、核心实现方案1. 基础组件

四种Flutter子页面向父组件传递数据的方法介绍

《四种Flutter子页面向父组件传递数据的方法介绍》在Flutter中,如果父组件需要调用子组件的方法,可以通过常用的四种方式实现,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录方法 1:使用 GlobalKey 和 State 调用子组件方法方法 2:通过回调函数(Callb