如何获得颤动小部件的大小传递给我?

时间:2019-07-13 07:00:33

标签: flutter

我已经传递了一个小部件,因此我无法为其分配GlobalKey来获取上下文以获得其RenderBox。鉴于我无法控制子窗口小部件,如何获得它的大小?

import 'package:flutter/material.dart';

class ScrollableViewport extends StatefulWidget {
  final Widget child;
  ScrollableViewport({Key key, @required this.child}) : super(key: key);

  @override
  _ScrollableViewportState createState() => _ScrollableViewportState();
}

class _ScrollableViewportState extends State<ScrollableViewport> {
  double _offsetX;
  double _offsetY;

  initState() {
    super.initState();
    _offsetX = 0;
    _offsetY = 0;
  }

  void onPandUpdate(DragUpdateDetails details) {
    setState(() {
      _offsetX += details.delta.dx;
      _offsetY += details.delta.dy;
      if (_offsetX > 0) {
        _offsetX = 0;
      }
      if (_offsetY > 0) {
        _offsetY = 0;
      }
    });
  }

  @override
  Widget build(BuildContext context) {
    return GestureDetector(
      onPanUpdate: onPandUpdate,
      child: Stack(
        children: [
          Positioned(
            top: _offsetY,
            left: _offsetX,
            child: widget.child
          )
        ]
      )
    );
  }
}

0 个答案:

没有答案