onResize function

Stream<Rectangle<num>> onResize(
  1. Element element
)

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;
}