如何解决因宽度而出现的渲染异常?
How to solve a rendering exception that happens because of width?
我能够完美地 运行 我的代码,但是在我添加了一个手势检测器并放置了一个 navigtor.pop() 之后,奇怪的异常开始出现在我的待办事项应用程序中。
首先是导致问题的代码:
import 'package:flutter/material.dart';
class Task extends StatefulWidget {
static const Routename = '/Task';
@override
TaskState createState() => TaskState();
}
class TaskState extends State<Task> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: SafeArea(
child: Container(
child: Column(children: [
Padding(
padding: const EdgeInsets.symmetric(vertical: 24),
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
GestureDetector(
onTap: () {
Navigator.pop(context);
},
),
Padding(padding: EdgeInsets.all(24)),
Image(image: AssetImage('assets/images/back_arrow_icon.png')),
Expanded(
child: TextField(
decoration: InputDecoration(
hintText: ' Enter your New Task',
hintStyle: TextStyle(fontSize: 18, color: Colors.grey),
border: InputBorder.none),
))
],
),
),
]))));
}
}
我也遇到了一个扑朔迷离的错误:
enter image description here
还有一个渲染异常:
The following assertion was thrown during performLayout():
RenderPointerListener object was given an infinite size during layout.
关于如何修复我的代码有什么建议吗?
这是因为您没有像这样将 GestureDetector 包裹在另一个小部件(子)周围:
GestureDetector(
onTap: () {
Navigator.pop(context);
},
child: Image(image: AssetImage('assets/images/back_arrow_icon.png')),
),
如果 GestureDetector
没有 child,它会增长以适应 parent。
默认情况下,具有不可见 child 的 GestureDetector 会忽略触摸。
尝试向 GestureDetector 添加 child。
GestureDetector(
onTap: () {
Navigator.pop(context);
},
child: Text('Back'),
),
我能够完美地 运行 我的代码,但是在我添加了一个手势检测器并放置了一个 navigtor.pop() 之后,奇怪的异常开始出现在我的待办事项应用程序中。
首先是导致问题的代码:
import 'package:flutter/material.dart';
class Task extends StatefulWidget {
static const Routename = '/Task';
@override
TaskState createState() => TaskState();
}
class TaskState extends State<Task> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: SafeArea(
child: Container(
child: Column(children: [
Padding(
padding: const EdgeInsets.symmetric(vertical: 24),
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
GestureDetector(
onTap: () {
Navigator.pop(context);
},
),
Padding(padding: EdgeInsets.all(24)),
Image(image: AssetImage('assets/images/back_arrow_icon.png')),
Expanded(
child: TextField(
decoration: InputDecoration(
hintText: ' Enter your New Task',
hintStyle: TextStyle(fontSize: 18, color: Colors.grey),
border: InputBorder.none),
))
],
),
),
]))));
}
}
我也遇到了一个扑朔迷离的错误:
enter image description here
还有一个渲染异常:
The following assertion was thrown during performLayout(): RenderPointerListener object was given an infinite size during layout.
关于如何修复我的代码有什么建议吗?
这是因为您没有像这样将 GestureDetector 包裹在另一个小部件(子)周围:
GestureDetector(
onTap: () {
Navigator.pop(context);
},
child: Image(image: AssetImage('assets/images/back_arrow_icon.png')),
),
如果 GestureDetector
没有 child,它会增长以适应 parent。
默认情况下,具有不可见 child 的 GestureDetector 会忽略触摸。
尝试向 GestureDetector 添加 child。
GestureDetector(
onTap: () {
Navigator.pop(context);
},
child: Text('Back'),
),