如何解决因宽度而出现的渲染异常?

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'),
),