anchor.diff:  
     set srcObject(MediaStream stream) {
       _srcObject = stream;
  -    findHtmlView()?.srcObject = stream.jsStream;
  +    if (htmlElementView != null) {
  +      findHtmlView()?.srcObject = stream.jsStream;
  +    }
  +    ui.platformViewRegistry.registerViewFactory(stream.id, (int viewId) {
  +      final x = HTML.VideoElement();
  +      x.autoplay = true;
  +      x.muted = true;
  +      x.srcObject = stream.jsStream;
  +      _htmlVideoElement = x;
  +      _videoViews.add(x);
  +      return x;
  +    });
  +    htmlElementView = HtmlElementView(viewType: stream.id);
  +    if (this.onStateChanged != null)
  +      this.onStateChanged();
     }
   
     void findAndApply(Size size) {
       final htmlView = findHtmlView();
       if (_srcObject != null && htmlView != null) {
  -      if (htmlView.width == size.width.toInt() && htmlView.height == size.height.toInt()) {
  -        print("Same size, return");
  +      if (htmlView.width == size.width.toInt() && htmlView.height == size.height.toInt())
           return;
  -      }
         htmlView.srcObject = _srcObject.jsStream;
         htmlView.width = size.width.toInt();
         htmlView.height = size.height.toInt();
  
positive.code:       child: new SizedBox(
          width: constraints.maxHeight * _aspectRatio,
          height: constraints.maxHeight,
          child: _renderer.htmlElementView
        )
      );
    }
  
negative.code: import 'dart:async';
  // ignore: uri_does_not_exist
  import 'dart:html' as HTML;
  import 'package:flutter/material.dart';
  import 'media_stream.dart';
  import 'dart:ui' as ui;
  
  enum RTCVideoViewObjectFit {
    RTCVideoViewObjectFitContain,
    RTCVideoViewObjectFitCover,
  }
  
  typedef void VideoRotationChangeCallback(int textureId, int rotation);
  typedef void VideoSizeChangeCallback(
  