Update the controller's onPageFinished reference when the widget is
rebuilt.
diff --git a/packages/webview_flutter/CHANGELOG.md b/packages/webview_flutter/CHANGELOG.md
index 92e2a10..813ab33 100644
--- a/packages/webview_flutter/CHANGELOG.md
+++ b/packages/webview_flutter/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.3.5+1
+
+* Fix a bug where updates to onPageFinished were ignored.
+
 ## 0.3.5
 
 * Added an onPageFinished callback.
diff --git a/packages/webview_flutter/lib/webview_flutter.dart b/packages/webview_flutter/lib/webview_flutter.dart
index 96a626b..e172c61 100644
--- a/packages/webview_flutter/lib/webview_flutter.dart
+++ b/packages/webview_flutter/lib/webview_flutter.dart
@@ -272,6 +272,7 @@
     controller._updateSettings(settings);
     controller._updateJavascriptChannels(widget.javascriptChannels);
     controller._navigationDelegate = widget.navigationDelegate;
+    controller._onPageFinished = widget.onPageFinished;
   }
 
   void _onPlatformViewCreated(int id) {
@@ -392,7 +393,7 @@
 
   _WebSettings _settings;
 
-  final PageFinishedCallback _onPageFinished;
+  PageFinishedCallback _onPageFinished;
 
   // Maps a channel name to a channel.
   Map<String, JavascriptChannel> _javascriptChannels =
diff --git a/packages/webview_flutter/pubspec.yaml b/packages/webview_flutter/pubspec.yaml
index ccaecd3..e21da55 100644
--- a/packages/webview_flutter/pubspec.yaml
+++ b/packages/webview_flutter/pubspec.yaml
@@ -1,6 +1,6 @@
 name: webview_flutter
 description: A Flutter plugin that provides a WebView widget on Android and iOS.
-version: 0.3.5
+version: 0.3.5+1
 author: Flutter Team <flutter-dev@googlegroups.com>
 homepage: https://github.com/flutter/plugins/tree/master/packages/webview_flutter
 
diff --git a/packages/webview_flutter/test/webview_flutter_test.dart b/packages/webview_flutter/test/webview_flutter_test.dart
index b1e45d5..d66f56d 100644
--- a/packages/webview_flutter/test/webview_flutter_test.dart
+++ b/packages/webview_flutter/test/webview_flutter_test.dart
@@ -608,6 +608,29 @@
       // to test that it does not crash on a null callback.
       platformWebView.fakeOnPageFinishedCallback();
     });
+
+    testWidgets('onPageFinished changed', (WidgetTester tester) async {
+      String returnedUrl;
+
+      await tester.pumpWidget(WebView(
+        initialUrl: 'https://youtube.com',
+        onPageFinished: (String url) {},
+      ));
+
+      await tester.pumpWidget(WebView(
+        initialUrl: 'https://youtube.com',
+        onPageFinished: (String url) {
+          returnedUrl = url;
+        },
+      ));
+
+      final FakePlatformWebView platformWebView =
+          fakePlatformViewsController.lastCreatedView;
+
+      platformWebView.fakeOnPageFinishedCallback();
+
+      expect(platformWebView.currentUrl, returnedUrl);
+    });
   });
 
   group('navigationDelegate', () {