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