我已经传递了一个小部件,因此我无法为其分配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
)
]
)
);
}
}