【问题标题】:Child unable to react to gesture孩子无法对手势做出反应
【发布时间】:2020-10-10 13:46:49
【问题描述】:

我在 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);
  }
}

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

【问题讨论】:

    标签: flutter dart flutter-layout flutter-test


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多