anchor.diff:  class WebViewController {
     WebViewController._(
       int id,
  -    this._settings,
  -    Set<JavascriptChannel> javascriptChannels,
  -    this._navigationDelegate,
  -    this._onPageFinished,
  +    this._widget,
     ) : _channel = MethodChannel('plugins.flutter.io/webview_$id') {
  -    _updateJavascriptChannelsFromSet(javascriptChannels);
  +    _settings = _WebSettings.fromWidget(_widget);
  +    _updateJavascriptChannelsFromSet(_widget.javascriptChannels);
       _channel.setMethodCallHandler(_onMethodCall);
     }
   
     final MethodChannel _channel;
   
  -  NavigationDelegate _navigationDelegate;
  -
     _WebSettings _settings;
   
  -  PageFinishedCallback _onPageFinished;
  +  WebView _widget;
   
     // Maps a channel name to a channel.
     Map<String, JavascriptChannel> _javascriptChannels =
  
positive.code: class _WebViewState extends State<WebView> {
    final Completer<WebViewController> _controller =
        Completer<WebViewController>();
  
    _WebSettings _settings;
  
    @override
    Widget build(BuildContext context) {
  
negative.code:         // _navigationDelegate can be null if the widget was rebuilt with no
          // navigation delegate after a navigation happened and just before we
          // got the navigationRequest message.
          final bool allowNavigation = _widget.navigationDelegate == null ||
              _widget.navigationDelegate(request) == NavigationDecision.navigate;
          return allowNavigation;
        case 'onPageFinished':
          if (_widget.onPageFinished != null) {
            _widget.onPageFinished(call.arguments['url']);
          }
  
          return null;
  