فهرست منبع

Add reloadUrl function

Gerry High 7 سال پیش
والد
کامیت
f3874b6eb5

+ 3 - 0
README.md

@@ -109,3 +109,6 @@ Future<Null> show();
 ```dart
 Future<Null> hide();
 ```
+```dart
+Future<Null> reloadUrl(String url);
+```

+ 17 - 0
android/src/main/java/com/flutter_webview_plugin/FlutterWebviewPlugin.java

@@ -63,6 +63,9 @@ public class FlutterWebviewPlugin implements MethodCallHandler {
             case "show":
                 show(call, result);
                 break;
+			case "reloadUrl":
+                reloadUrl(call, result);
+                break;				
             default:
                 result.notImplemented();
                 break;
@@ -150,6 +153,20 @@ public class FlutterWebviewPlugin implements MethodCallHandler {
         if (webViewManager != null) {
             webViewManager.reload(call, result);
         }
+    }
+	private void reloadUrl(MethodCall call, MethodChannel.Result result) {
+        if (webViewManager != null) {
+            String url = call.argument("url");
+            webViewManager.openUrl(false,
+                    false,
+                    false,
+                    false,
+                    "",
+                    url,
+                    false,
+                    false
+            );
+        }
     }
     private void eval(MethodCall call, final MethodChannel.Result result) {
         if (webViewManager != null) {

+ 10 - 0
ios/Classes/FlutterWebviewPlugin.m

@@ -46,6 +46,9 @@ static NSString *const CHANNEL_NAME = @"flutter_webview_plugin";
     } else if ([@"resize" isEqualToString:call.method]) {
         [self resize:call];
         result(nil);
+	} else if ([@"reloadUrl" isEqualToString:call.method]) {
+        [self reloadUrl:call];
+        result(nil);	
     } else if ([@"show" isEqualToString:call.method]) {
         [self show];
         result(nil);
@@ -156,6 +159,13 @@ static NSString *const CHANNEL_NAME = @"flutter_webview_plugin";
     }
 }
 
+- (void)reloadUrl:(FlutterMethodCall*)call {
+    if (self.webview != nil) {
+		NSString *url = call.arguments[@"url"];
+		NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:url]];
+        [self.webview loadRequest:request];
+    }
+}
 - (void)show {
     if (self.webview != nil) {
         self.webview.hidden = false;

+ 8 - 0
lib/src/base.dart

@@ -138,6 +138,14 @@ class FlutterWebviewPlugin {
   // Shows the webview
   Future show() => _channel.invokeMethod("show");
 
+  // Reload webview with a new url
+  Future reloadUrl(String url) async {
+    Map<String, dynamic> args = {
+      "url": url
+    };
+    await _channel.invokeMethod("reloadUrl", args);
+  }
+
   /// Close all Streams
   void dispose() {
     _onDestroy.close();