onResize function
A stream of contect rects fired when element
changes size.
A content rect is a Rectangle where top
= padding-top, left
=
padding-left, width
= innerWidth, and height
= innerHeight.
NOTE: This only works in browsers that support ResizeObserver. Check supportsResizeObserver from feature_detector.dart before using this.
Implementation
Stream<Rectangle?> onResize(Element element) {
assert(supportsResizeObserver, 'ResizeObserver support is required');
late StreamController<Rectangle?> controller;
late ResizeObserver observer;
controller = StreamController<Rectangle?>.broadcast(
sync: true,
onListen: () {
observer = ResizeObserver(allowInterop((entries, _) {
for (var entry in entries) {
controller.add(entry.contentRect);
}
}));
observer.observe(element);
},
onCancel: () {
observer.disconnect();
});
return controller.stream;
}