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');
StreamController<Rectangle>? controller;
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;
}