首页 > 解决方案 > 孩子无法对手势做出反应

问题描述

我在 Flutter Europe 频道上看过一段视频,他们解释了我们如何创建自己的小部件,他们教你如何构建自己的中心,我已经创建了相同的并且工作正常,但问题是下面的小部件无法识别任何手势。

import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';

class CustomPosition extends SingleChildRenderObjectWidget {
  final Key key;
  final Widget child;

  CustomPosition({this.key, this.child});

  @override
  RenderObject createRenderObject(BuildContext context) {
    print("render created");
    return _RenderCustomPosition();
  }
}

class _RenderCustomPosition extends RenderBox
    with RenderObjectWithChildMixin<RenderBox> {
 
  @override
  void performLayout() {
    if (child != null) {
      size = constraints.biggest;
      child.layout(constraints.loosen(), parentUsesSize: true);

      double dx = (constraints.maxWidth - child.size.width) / 2;
      double dy = (constraints.minHeight - child.size.height) / 2;

      BoxParentData childParentData = child.parentData;
      childParentData.offset = Offset(dx, dy);
    } else {
      size = Size(0, 0);
    }
    //super.performLayout();
  }

  @override
  void paint(PaintingContext context, Offset offset) {
    if (child != null) {
      var parentData = child.parentData as BoxParentData;
      context.paintChild(child, offset + parentData.offset);
    }
    //super.paint(context, offset);
  }
}

如果我使用这个自定义位置并为其提供一个孩子,它将居中,但问题是如果该孩子包含某种手势识别,那么它不会对手势做出反应。请帮我解决我所缺少的。

标签: flutterdartflutter-layoutflutter-test

解决方案


当您使用在另一个文件(如 main.dart)中创建的小部件时,只需使用 GestureRecognizer() 将其包装起来,然后将 on tap 设置为您想要的任何内容


推荐阅读