首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Flutter Navigator.replace和Navigator.replaceRouteBelow

Flutter Navigator.replace和Navigator.replaceRouteBelow
EN

Stack Overflow用户
提问于 2018-10-29 14:42:47
回答 1查看 2.2K关注 0票数 1

如何使用Navigator.replace() and Navigator.replaceRouteBelow()。我在Navigator.dart中找到了这两个方法,并尝试了一下。从A导航到B,然后导航到C。在C中执行以下代码:

代码语言:javascript
运行
复制
Navigator.replace(context,
            oldRoute: MaterialPageRoute(builder: (context) => PushPageB()),
            newRoute: MaterialPageRoute(builder: (context) => PushPageD()));

和应用程序崩溃,这是日志:

手势捕获的异常

代码语言:javascript
运行
复制
The following assertion was thrown while handling a gesture:
'package:flutter/src/widgets/navigator.dart': Failed assertion: line 1673 pos 12:

'oldRoute._navigator == this': is not true.

Either the assertion indicates an error in the framework itself, or we should provide substantially

more information in this error message to help you determine and fix the underlying cause.

In either case, please report this assertion by filing a bug on GitHub:
  https://github.com/flutter/flutter/issues/new

When the exception was thrown, this was the stack:

2      NavigatorState.replace (package:flutter/src/widgets/navigator.dart:1673:12)

3      Navigator.replace (package:flutter/src/widgets/navigator.dart:1041:34)

4      ReplacePage.build.<anonymous closure> (package:flutter_navigation/replace_page_demo.dart:45:31)

5      _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:507:14)

6      _InkResponseState.build.<anonymous closure> (package:flutter/src/material/ink_well.dart:562:30)

7      GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:102:24)

8      TapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:242:9)

9      TapGestureRecognizer.handlePrimaryPointer (package:flutter/src/gestures/tap.dart:175:7)

10     PrimaryPointerGestureRecognizer.handleEvent (package:flutter/src/gestures/recognizer.dart:315:9)

11     PointerRouter._dispatch (package:flutter/src/gestures/pointer_router.dart:73:12)

12     PointerRouter.route (package:flutter/src/gestures/pointer_router.dart:101:11)

13     _WidgetsFlutterBinding&BindingBase&GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:143:19)

14     _WidgetsFlutterBinding&BindingBase&GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:121:22)

15     _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:101:7)

16     _WidgetsFlutterBinding&BindingBase&GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:64:7)

17     _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:48:7)

18     _invoke1 (dart:ui/hooks.dart:153:13)

19     _dispatchPointerDataPacket (dart:ui/hooks.dart:107:5)
(elided 2 frames from class _AssertionError)

Handler: onTap

Recognizer:
  TapGestureRecognizer#7d65d(debugOwner: GestureDetector, state: possible, 

won arena, finalPosition:
  Offset(233.6, 383.8), sent tap down)
EN

回答 1

Stack Overflow用户

发布于 2018-10-29 15:01:03

代码语言:javascript
运行
复制
'oldRoute._navigator == this': is not true.

显示需要旧路由等于以下值

另外,我从来不使用Navigator.replace,而是像这样使用

代码语言:javascript
运行
复制
Route route = MaterialPageRoute(builder: (context) => MyHomePage());
Navigator.pushReplacement(context, route);

希望能有所帮助

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53040057

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档