flutter - 关闭导航器时出现颤振错误
问题描述
使用不包含 Navigator 的上下文请求的 Navigator 操作
完整代码在这里
class _MyAppState extends State<MyApp> {
@override
Widget build(BuildContext context) {
return new MaterialApp(
home: new Scaffold(
drawer: new Drawer(child: new ListView(
children: <Widget>[
new DrawerHeader(
decoration:BoxDecoration(
color: Colors.blue
),
child: new Container(
child: new Text("Hearer name"),
),),
new ListTile(
title: new Text("pop1"),
onTap: (){Navigator.pop(context);},
),
new ListTile(
title: new Text("pop2"),
onTap: (){Navigator.pop(context);},
),
new Container(
padding: const EdgeInsets.all(20.0),
child: new Text("asdsad"),
decoration: BoxDecoration(
color: Colors.grey
),
), new ListTile(
title: new Text("pop4"),
onTap: (){Navigator.pop(context);},
),
new Container(
padding: const EdgeInsets.all(20.0),
child: new Text("opt2"),
), new Container(
padding: const EdgeInsets.all(20.0),
child:
new Text("Asdsa"),
),
],
),),
appBar: new AppBar(
title: new Text("Hi , i am milla"),
),
body: new Center(
child: new ListView(
shrinkWrap: true,
padding: const EdgeInsets.all(20.0),
children: <Widget>[
new ProductItem("orange"),
],
)
),
),
);
}
完整的错误代码
:══╡由手势抓住的例外╞═════════════════════════════════════════ ══════════════════════════ I/flutter(3551):处理手势时抛出以下断言:I/flutter(3551):使用不包含 Navigator 的上下文请求的 Navigator 操作。I/flutter (3551):用于从 Navigator 推送或弹出路由的上下文必须是作为 I/flutter (3551) 的小部件的上下文:Navigator 小部件的后代。I/flutter (3551): I/flutter (3551): 当异常被抛出时,这是堆栈:I/flutter (3551): #0
Navigator.of。(包:flutter/src/widgets/navigator.dart:1179:9) I/flutter (3551):1 Navigator.of (package:flutter/src/widgets/navigator.dart:1186:6) I/flutter (3551):
2 Navigator.pop (package:flutter/src/widgets/navigator.dart:1072:22) I/flutter (
3551):#3 _MyAppState.build。(file:///project/flutter_app_2/lib/main.dart:31:38) I/flutter (3551):
4 _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:494:14) I/flutter (3551):
5 _InkResponseState.build。(package:flutter/src/material/ink_well.dart:549:30) I/flutter (3551):
6 GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:102:24) I/flutter (
3551): #7 TapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:161:9) I/flutter (3551): #8
TapGestureRecognizer.acceptGesture (package:flutter/src/gestures/tap.dart: 123:7) I/flutter (3551): #9
GestureArenaManager.sweep (package:flutter/src/gestures/arena.dart:156:27) I/flutter (3551):10 _WidgetsFlutterBinding&BindingBase&GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:147:20) I/flutter (3551):
11 _WidgetsFlutterBinding&BindingBase&GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:121:22) I/flutter (3551):
12 _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:101:7) I/flutter (3551):
13 _WidgetsFlutterBinding&BindingBase&GestureBinding._flushPointerEventQueue
(包:flutter/src/gestures/binding.dart:64:7) I/flutter (3551):
14 _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerDataPacket
(包:flutter/src/gestures/binding.dart:48:7) I/flutter (3551):
15 _invoke1 (dart:ui/hooks.dart:134:13) I/flutter (3551): #16 _dispatchPointerDataPacket (dart:ui/hooks.dart:91:5) I/flutter (3551): I/flutter (3551 ): 处理程序: onTap I/flutter (3551):
识别器:I/flutter(3551):
TapGestureRecognizer#a8d39(debugOwner: GestureDetector, state: ready, won arena, finalPosition: I/flutter (3551): Offset(51.9, 239.7), sent tap down) I/flutter (3551): ════════ ══════════════════════════════════════════════════ ══════════════════════════════════════════════551╕:引发异常:使用不包含导航器的上下文请求导航器操作。I/flutter (3551):引发另一个异常:使用不包含导航器的上下文请求导航器操作。I/flutter (3551):引发另一个异常:使用不包含导航器的上下文请求导航器操作。I/flutter (3551):引发另一个异常:使用不包含导航器的上下文请求导航器操作。I/flutter (3551): 另一个异常被抛出:使用不包含 Navigator 的上下文请求的 Navigator 操作。I/flutter (3551):引发另一个异常:使用不包含导航器的上下文请求导航器操作。I/flutter (3551):引发另一个异常:使用不包含导航器的上下文请求导航器操作。I/flutter (3551):引发另一个异常:使用不包含导航器的上下文请求导航器操作。I/flutter (3551):引发另一个异常:使用不包含导航器的上下文请求导航器操作。I/flutter (3551):引发另一个异常:使用不包含导航器的上下文请求导航器操作。I/flutter (3551):引发另一个异常:使用不包含导航器的上下文请求导航器操作。I/flutter (3551):引发另一个异常:使用不包含导航器的上下文请求导航器操作。D/EGL_emulation(3551): eglMakeCurrent: 0xa84052a0: ver 2 0 (tinfo 0xa84032d0) 失去与设备的连接。
解决方案
我认为这段代码可能会对您有所帮助。
在抽屉屏幕中:
drawer: new Drawer(
child: new Column(
children: <Widget>[
new DrawerHeader(
child: new Container(
child: new Text("Hearer name"),
),
),
new Flexible(
child: new ListView.builder(
itemCount: 1,
itemBuilder: (BuildContext context, int index) {
return new ListTile(
title: new Text("Tap $index"),
onTap: () => Navigator.of(context).pop(),
);
},
),
)
],
),
),
推荐阅读
- kubernetes - osx Kubernetes kube-vpnkit-forwarder 继续启动并且无法 ping CLUSTER-IP
- php - 在 Oscommerce 中出现管理员错误后将 v2.2 升级到 v2.3.4.1
- ruby-on-rails - Rails API JWT 令牌身份验证在 Dev 中工作,但在 Prod 中不工作
- java - Mongo模板天数之间的差异并与db字段进行比较
- migrate - 命令 migrate 卸载
- python - 如何计算组内值的平均百分比?
- java - JPA:仅当结果集不为空时才缓存查询
- c# - C# - 添加“网络位置”,而不是映射驱动器
- c# - 我正在尝试使用 C# 在 Excel 中删除一行,但它不起作用
- python - Python unittest,如果它在一个类中,如何单独测试函数?