Bläddra i källkod

Merge pull request #86 from gerryhigh/master

Add 'show', 'hide', and 'reloadUrl' functions
Hadrien Lejard 7 år sedan
förälder
incheckning
ab882500da

+ 5 - 0
.gitignore

@@ -9,3 +9,8 @@ packages
 pubspec.lock
 
 example/ios/Podfile.lock
+**/Flutter/App.framework/
+**/Flutter/Flutter.framework/
+**/Flutter/Generated.xcconfig/
+**/Flutter/flutter_assets/
+

+ 9 - 0
README.md

@@ -103,3 +103,12 @@ Future<Map<String, dynamic>> getCookies();
 ```dart
 Future<Null> resize(Rect rect);
 ```
+```dart
+Future<Null> show();
+```
+```dart
+Future<Null> hide();
+```
+```dart
+Future<Null> reloadUrl(String url);
+```

+ 3 - 2
android/build.gradle

@@ -3,11 +3,12 @@ version '1.0-SNAPSHOT'
 
 buildscript {
     repositories {
+        google()
         jcenter()
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:2.3.0'
+        classpath 'com.android.tools.build:gradle:3.1.2'
     }
 }
 
@@ -21,7 +22,7 @@ apply plugin: 'com.android.library'
 
 android {
     compileSdkVersion 25
-    buildToolsVersion '25.0.0'
+    buildToolsVersion '27.0.3'
 
     defaultConfig {
         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

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

@@ -57,6 +57,15 @@ public class FlutterWebviewPlugin implements MethodCallHandler {
             case "forward":
                 forward(call, result);
                 break;
+            case "hide":
+                hide(call, result);
+                break;
+            case "show":
+                show(call, result);
+                break;
+            case "reloadUrl":
+                reloadUrl(call, result);
+                break;				
             default:
                 result.notImplemented();
                 break;
@@ -145,6 +154,20 @@ public class FlutterWebviewPlugin implements MethodCallHandler {
             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) {
             webViewManager.eval(call, result);
@@ -158,6 +181,16 @@ public class FlutterWebviewPlugin implements MethodCallHandler {
         }
         result.success(null);
     }
+    private void hide(MethodCall call, final MethodChannel.Result result) {
+        if (webViewManager != null) {
+            webViewManager.hide(call, result);
+        }
+    }
+    private void show(MethodCall call, final MethodChannel.Result result) {
+        if (webViewManager != null) {
+            webViewManager.show(call, result);
+        }
+    }
 
     private int dp2px(Context context, float dp) {
         final float scale = context.getResources().getDisplayMetrics().density;

+ 10 - 0
android/src/main/java/com/flutter_webview_plugin/WebviewManager.java

@@ -162,4 +162,14 @@ class WebviewManager {
     boolean canGoForward() {
         return webView.canGoForward();
     }
+    void hide(MethodCall call, MethodChannel.Result result) {
+        if (webView != null) {
+            webView.setVisibility(View.INVISIBLE);
+        }
+    }
+    void show(MethodCall call, MethodChannel.Result result) {
+        if (webView != null) {
+            webView.setVisibility(View.VISIBLE);
+        }
+    }
 }

+ 2 - 2
example/android/app/build.gradle

@@ -15,8 +15,8 @@ apply plugin: 'com.android.application'
 apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
 
 android {
-    compileSdkVersion 25
-    buildToolsVersion '25.0.2'
+    compileSdkVersion 27
+    buildToolsVersion '27.0.3'
 
     lintOptions {
         disable 'InvalidPackage'

+ 9 - 1
example/android/build.gradle

@@ -1,16 +1,24 @@
 buildscript {
     repositories {
+        google()
         jcenter()
+        maven {
+            url 'https://maven.google.com/'
+        }
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:2.2.3'
+        classpath 'com.android.tools.build:gradle:3.1.1'
     }
 }
 
 allprojects {
     repositories {
+        google()
         jcenter()
+        maven {
+            url 'https://maven.google.com/'
+        }
     }
 }
 

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 354 - 467
example/ios/Flutter/flutter_assets/LICENSE


BIN
example/ios/Flutter/flutter_assets/snapshot_blob.bin


+ 1 - 17
example/ios/Runner.xcodeproj/project.pbxproj

@@ -160,7 +160,6 @@
 				97C146EC1CF9000F007C117D /* Resources */,
 				9705A1C41CF9048500538489 /* Embed Frameworks */,
 				95BB15E9E1769C0D146AA592 /* [CP] Embed Pods Frameworks */,
-				532EA9D341340B1DCD08293D /* [CP] Copy Pods Resources */,
 				3B06AD1E1E4923F5004D2608 /* Thin Binary */,
 			);
 			buildRules = (
@@ -236,21 +235,6 @@
 			shellPath = /bin/sh;
 			shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" thin";
 		};
-		532EA9D341340B1DCD08293D /* [CP] Copy Pods Resources */ = {
-			isa = PBXShellScriptBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-			);
-			inputPaths = (
-			);
-			name = "[CP] Copy Pods Resources";
-			outputPaths = (
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-			shellPath = /bin/sh;
-			shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n";
-			showEnvVarsInLog = 0;
-		};
 		95BB15E9E1769C0D146AA592 /* [CP] Embed Pods Frameworks */ = {
 			isa = PBXShellScriptBuildPhase;
 			buildActionMask = 2147483647;
@@ -258,7 +242,7 @@
 			);
 			inputPaths = (
 				"${SRCROOT}/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh",
-				"${PODS_ROOT}/../../../../../../flutter/bin/cache/artifacts/engine/ios/Flutter.framework",
+				"${PODS_ROOT}/../../../../../flutter/bin/cache/artifacts/engine/ios/Flutter.framework",
 				"${BUILT_PRODUCTS_DIR}/flutter_webview_plugin/flutter_webview_plugin.framework",
 			);
 			name = "[CP] Embed Pods Frameworks";

+ 28 - 0
ios/Classes/FlutterWebviewPlugin.m

@@ -46,6 +46,15 @@ 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);
+    } else if ([@"hide" isEqualToString:call.method]) {
+        [self hide];
+        result(nil);
     } else {
         result(FlutterMethodNotImplemented);
     }
@@ -150,6 +159,25 @@ 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;
+    }
+}
+
+- (void)hide {
+    if (self.webview != nil) {
+        self.webview.hidden = true;
+    }
+}
+
 #pragma mark -- WkWebView Delegate
 - (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction
     decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler {

+ 14 - 0
lib/src/base.dart

@@ -131,6 +131,20 @@ class FlutterWebviewPlugin {
   /// Navigates forward on the Webview.
   /// This is only available on Android for now.
   Future goForward() => _channel.invokeMethod("forward");
+  
+  // Hides the webview
+  Future hide() => _channel.invokeMethod("hide");
+  
+  // 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() {

Vissa filer visades inte eftersom för många filer har ändrats