updated docs, Added allowGoBackWithBackButton and shouldCloseOnBackButtonPressed Android-specific InAppBrowser options
This commit is contained in:
parent
a3e4da3e61
commit
b2d0f3a61d
|
@ -1,6 +1,7 @@
|
||||||
## 5.2.1
|
## 5.2.1
|
||||||
|
|
||||||
- Added `isRunning` method to the `HeadlessInAppWebView` class
|
- Added `isRunning` method to the `HeadlessInAppWebView` class
|
||||||
|
- Added `allowGoBackWithBackButton` and `shouldCloseOnBackButtonPressed` Android-specific InAppBrowser options
|
||||||
- Fixed iOS `WebMessageListener` javascript implementation not calling event listeners when `onmessage` is set
|
- Fixed iOS `WebMessageListener` javascript implementation not calling event listeners when `onmessage` is set
|
||||||
- Fixed `onCreateContextMenu` event on Android where `hitTestResult` has always `null` values
|
- Fixed `onCreateContextMenu` event on Android where `hitTestResult` has always `null` values
|
||||||
- Fixed "java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.SearchView.setQuery(java.lang.CharSequence, boolean)' on a null object reference" [#742](https://github.com/pichillilorenzo/flutter_inappwebview/issues/742)
|
- Fixed "java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.SearchView.setQuery(java.lang.CharSequence, boolean)' on a null object reference" [#742](https://github.com/pichillilorenzo/flutter_inappwebview/issues/742)
|
||||||
|
|
|
@ -247,12 +247,21 @@ public class InAppBrowserActivity extends AppCompatActivity implements InAppBrow
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean onKeyDown(int keyCode, KeyEvent event) {
|
public boolean onKeyDown(int keyCode, KeyEvent event) {
|
||||||
if ((keyCode == KeyEvent.KEYCODE_BACK)) {
|
if (keyCode == KeyEvent.KEYCODE_BACK) {
|
||||||
if (canGoBack())
|
if (options.shouldCloseOnBackButtonPressed) {
|
||||||
goBack();
|
|
||||||
else if (options.closeOnCannotGoBack)
|
|
||||||
close(null);
|
close(null);
|
||||||
return true;
|
return true;
|
||||||
|
}
|
||||||
|
if (options.allowGoBackWithBackButton) {
|
||||||
|
if (canGoBack())
|
||||||
|
goBack();
|
||||||
|
else if (options.closeOnCannotGoBack)
|
||||||
|
close(null);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (!options.shouldCloseOnBackButtonPressed) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return super.onKeyDown(keyCode, event);
|
return super.onKeyDown(keyCode, event);
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,6 +23,8 @@ public class InAppBrowserOptions implements Options<InAppBrowserActivity> {
|
||||||
|
|
||||||
public Boolean hideTitleBar = false;
|
public Boolean hideTitleBar = false;
|
||||||
public Boolean closeOnCannotGoBack = true;
|
public Boolean closeOnCannotGoBack = true;
|
||||||
|
public Boolean allowGoBackWithBackButton = true;
|
||||||
|
public Boolean shouldCloseOnBackButtonPressed = false;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public InAppBrowserOptions parse(Map<String, Object> options) {
|
public InAppBrowserOptions parse(Map<String, Object> options) {
|
||||||
|
@ -58,6 +60,12 @@ public class InAppBrowserOptions implements Options<InAppBrowserActivity> {
|
||||||
case "hideProgressBar":
|
case "hideProgressBar":
|
||||||
hideProgressBar = (Boolean) value;
|
hideProgressBar = (Boolean) value;
|
||||||
break;
|
break;
|
||||||
|
case "allowGoBackWithBackButton":
|
||||||
|
allowGoBackWithBackButton = (Boolean) value;
|
||||||
|
break;
|
||||||
|
case "shouldCloseOnBackButtonPressed":
|
||||||
|
shouldCloseOnBackButtonPressed = (Boolean) value;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -75,6 +83,8 @@ public class InAppBrowserOptions implements Options<InAppBrowserActivity> {
|
||||||
options.put("hideTitleBar", hideTitleBar);
|
options.put("hideTitleBar", hideTitleBar);
|
||||||
options.put("closeOnCannotGoBack", closeOnCannotGoBack);
|
options.put("closeOnCannotGoBack", closeOnCannotGoBack);
|
||||||
options.put("hideProgressBar", hideProgressBar);
|
options.put("hideProgressBar", hideProgressBar);
|
||||||
|
options.put("allowGoBackWithBackButton", allowGoBackWithBackButton);
|
||||||
|
options.put("shouldCloseOnBackButtonPressed", shouldCloseOnBackButtonPressed);
|
||||||
return options;
|
return options;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"flutter_downloader","path":"/Users/lorenzopichilli/.pub-cache/hosted/pub.dartlang.org/flutter_downloader-1.5.2/","dependencies":[]},{"name":"flutter_inappwebview","path":"/Users/lorenzopichilli/Desktop/flutter_inappwebview/","dependencies":[]},{"name":"integration_test","path":"/Users/lorenzopichilli/fvm/versions/2.1.0-10.0.pre/packages/integration_test/","dependencies":[]},{"name":"path_provider","path":"/Users/lorenzopichilli/.pub-cache/hosted/pub.dartlang.org/path_provider-2.0.0-nullsafety/","dependencies":[]},{"name":"permission_handler","path":"/Users/lorenzopichilli/.pub-cache/hosted/pub.dartlang.org/permission_handler-5.1.0+2/","dependencies":[]},{"name":"url_launcher","path":"/Users/lorenzopichilli/.pub-cache/hosted/pub.dartlang.org/url_launcher-6.0.0-nullsafety.6/","dependencies":[]}],"android":[{"name":"flutter_downloader","path":"/Users/lorenzopichilli/.pub-cache/hosted/pub.dartlang.org/flutter_downloader-1.5.2/","dependencies":[]},{"name":"flutter_inappwebview","path":"/Users/lorenzopichilli/Desktop/flutter_inappwebview/","dependencies":[]},{"name":"integration_test","path":"/Users/lorenzopichilli/fvm/versions/2.1.0-10.0.pre/packages/integration_test/","dependencies":[]},{"name":"path_provider","path":"/Users/lorenzopichilli/.pub-cache/hosted/pub.dartlang.org/path_provider-2.0.0-nullsafety/","dependencies":[]},{"name":"permission_handler","path":"/Users/lorenzopichilli/.pub-cache/hosted/pub.dartlang.org/permission_handler-5.1.0+2/","dependencies":[]},{"name":"url_launcher","path":"/Users/lorenzopichilli/.pub-cache/hosted/pub.dartlang.org/url_launcher-6.0.0-nullsafety.6/","dependencies":[]}],"macos":[{"name":"path_provider_macos","path":"/Users/lorenzopichilli/.pub-cache/hosted/pub.dartlang.org/path_provider_macos-0.0.5-nullsafety/","dependencies":[]},{"name":"url_launcher_macos","path":"/Users/lorenzopichilli/.pub-cache/hosted/pub.dartlang.org/url_launcher_macos-0.1.0-nullsafety.2/","dependencies":[]}],"linux":[{"name":"path_provider_linux","path":"/Users/lorenzopichilli/.pub-cache/hosted/pub.dartlang.org/path_provider_linux-0.2.0-nullsafety/","dependencies":[]},{"name":"url_launcher_linux","path":"/Users/lorenzopichilli/.pub-cache/hosted/pub.dartlang.org/url_launcher_linux-0.1.0-nullsafety.3/","dependencies":[]}],"windows":[{"name":"path_provider_windows","path":"/Users/lorenzopichilli/.pub-cache/hosted/pub.dartlang.org/path_provider_windows-0.1.0-nullsafety.3/","dependencies":[]},{"name":"url_launcher_windows","path":"/Users/lorenzopichilli/.pub-cache/hosted/pub.dartlang.org/url_launcher_windows-0.1.0-nullsafety.2/","dependencies":[]}],"web":[]},"dependencyGraph":[{"name":"flutter_downloader","dependencies":[]},{"name":"flutter_inappwebview","dependencies":[]},{"name":"integration_test","dependencies":[]},{"name":"path_provider","dependencies":["path_provider_macos","path_provider_linux","path_provider_windows"]},{"name":"path_provider_linux","dependencies":[]},{"name":"path_provider_macos","dependencies":[]},{"name":"path_provider_windows","dependencies":[]},{"name":"permission_handler","dependencies":[]},{"name":"url_launcher","dependencies":["url_launcher_linux","url_launcher_macos","url_launcher_windows"]},{"name":"url_launcher_linux","dependencies":[]},{"name":"url_launcher_macos","dependencies":[]},{"name":"url_launcher_windows","dependencies":[]}],"date_created":"2021-03-23 16:33:10.809487","version":"2.1.0-10.0.pre"}
|
{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"flutter_downloader","path":"/Users/lorenzopichilli/.pub-cache/hosted/pub.dartlang.org/flutter_downloader-1.5.2/","dependencies":[]},{"name":"flutter_inappwebview","path":"/Users/lorenzopichilli/Desktop/flutter_inappwebview/","dependencies":[]},{"name":"integration_test","path":"/Users/lorenzopichilli/fvm/versions/2.1.0-10.0.pre/packages/integration_test/","dependencies":[]},{"name":"path_provider","path":"/Users/lorenzopichilli/.pub-cache/hosted/pub.dartlang.org/path_provider-2.0.0-nullsafety/","dependencies":[]},{"name":"permission_handler","path":"/Users/lorenzopichilli/.pub-cache/hosted/pub.dartlang.org/permission_handler-5.1.0+2/","dependencies":[]},{"name":"url_launcher","path":"/Users/lorenzopichilli/.pub-cache/hosted/pub.dartlang.org/url_launcher-6.0.0-nullsafety.6/","dependencies":[]}],"android":[{"name":"flutter_downloader","path":"/Users/lorenzopichilli/.pub-cache/hosted/pub.dartlang.org/flutter_downloader-1.5.2/","dependencies":[]},{"name":"flutter_inappwebview","path":"/Users/lorenzopichilli/Desktop/flutter_inappwebview/","dependencies":[]},{"name":"integration_test","path":"/Users/lorenzopichilli/fvm/versions/2.1.0-10.0.pre/packages/integration_test/","dependencies":[]},{"name":"path_provider","path":"/Users/lorenzopichilli/.pub-cache/hosted/pub.dartlang.org/path_provider-2.0.0-nullsafety/","dependencies":[]},{"name":"permission_handler","path":"/Users/lorenzopichilli/.pub-cache/hosted/pub.dartlang.org/permission_handler-5.1.0+2/","dependencies":[]},{"name":"url_launcher","path":"/Users/lorenzopichilli/.pub-cache/hosted/pub.dartlang.org/url_launcher-6.0.0-nullsafety.6/","dependencies":[]}],"macos":[{"name":"path_provider_macos","path":"/Users/lorenzopichilli/.pub-cache/hosted/pub.dartlang.org/path_provider_macos-0.0.5-nullsafety/","dependencies":[]},{"name":"url_launcher_macos","path":"/Users/lorenzopichilli/.pub-cache/hosted/pub.dartlang.org/url_launcher_macos-0.1.0-nullsafety.2/","dependencies":[]}],"linux":[{"name":"path_provider_linux","path":"/Users/lorenzopichilli/.pub-cache/hosted/pub.dartlang.org/path_provider_linux-0.2.0-nullsafety/","dependencies":[]},{"name":"url_launcher_linux","path":"/Users/lorenzopichilli/.pub-cache/hosted/pub.dartlang.org/url_launcher_linux-0.1.0-nullsafety.3/","dependencies":[]}],"windows":[{"name":"path_provider_windows","path":"/Users/lorenzopichilli/.pub-cache/hosted/pub.dartlang.org/path_provider_windows-0.1.0-nullsafety.3/","dependencies":[]},{"name":"url_launcher_windows","path":"/Users/lorenzopichilli/.pub-cache/hosted/pub.dartlang.org/url_launcher_windows-0.1.0-nullsafety.2/","dependencies":[]}],"web":[]},"dependencyGraph":[{"name":"flutter_downloader","dependencies":[]},{"name":"flutter_inappwebview","dependencies":[]},{"name":"integration_test","dependencies":[]},{"name":"path_provider","dependencies":["path_provider_macos","path_provider_linux","path_provider_windows"]},{"name":"path_provider_linux","dependencies":[]},{"name":"path_provider_macos","dependencies":[]},{"name":"path_provider_windows","dependencies":[]},{"name":"permission_handler","dependencies":[]},{"name":"url_launcher","dependencies":["url_launcher_linux","url_launcher_macos","url_launcher_windows"]},{"name":"url_launcher_linux","dependencies":[]},{"name":"url_launcher_macos","dependencies":[]},{"name":"url_launcher_windows","dependencies":[]}],"date_created":"2021-03-23 21:45:58.621500","version":"2.1.0-10.0.pre"}
|
|
@ -1,13 +1,13 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# This is a generated file; do not edit or check into version control.
|
# This is a generated file; do not edit or check into version control.
|
||||||
export "FLUTTER_ROOT=/Users/lorenzopichilli/fvm/versions/2.1.0-10.0.pre"
|
export "FLUTTER_ROOT=/Users/lorenzopichilli/flutter"
|
||||||
export "FLUTTER_APPLICATION_PATH=/Users/lorenzopichilli/Desktop/flutter_inappwebview/example"
|
export "FLUTTER_APPLICATION_PATH=/Users/lorenzopichilli/Desktop/flutter_inappwebview/example"
|
||||||
export "FLUTTER_TARGET=integration_test/webview_flutter_test.dart"
|
export "FLUTTER_TARGET=/Users/lorenzopichilli/Desktop/flutter_inappwebview/example/lib/main.dart"
|
||||||
export "FLUTTER_BUILD_DIR=build"
|
export "FLUTTER_BUILD_DIR=build"
|
||||||
export "SYMROOT=${SOURCE_ROOT}/../build/ios"
|
export "SYMROOT=${SOURCE_ROOT}/../build/ios"
|
||||||
export "FLUTTER_BUILD_NAME=1.0.0"
|
export "FLUTTER_BUILD_NAME=1.0.0"
|
||||||
export "FLUTTER_BUILD_NUMBER=1"
|
export "FLUTTER_BUILD_NUMBER=1"
|
||||||
export "DART_DEFINES=RkxVVFRFUl9XRUJfQVVUT19ERVRFQ1Q9dHJ1ZQ=="
|
export "DART_DEFINES=Zmx1dHRlci5pbnNwZWN0b3Iuc3RydWN0dXJlZEVycm9ycz10cnVl,RkxVVFRFUl9XRUJfQVVUT19ERVRFQ1Q9dHJ1ZQ=="
|
||||||
export "DART_OBFUSCATION=false"
|
export "DART_OBFUSCATION=false"
|
||||||
export "TRACK_WIDGET_CREATION=true"
|
export "TRACK_WIDGET_CREATION=true"
|
||||||
export "TREE_SHAKE_ICONS=false"
|
export "TREE_SHAKE_ICONS=false"
|
||||||
|
|
|
@ -79,7 +79,7 @@ class ChromeSafariBrowser {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
///Opens an [url] in a new [ChromeSafariBrowser] instance.
|
///Opens the [ChromeSafariBrowser] instance with an [url].
|
||||||
///
|
///
|
||||||
///[url]: The [url] to load.
|
///[url]: The [url] to load.
|
||||||
///
|
///
|
||||||
|
|
|
@ -11,13 +11,21 @@ class AndroidInAppBrowserOptions implements BrowserOptions, AndroidOptions {
|
||||||
///Set the action bar's title.
|
///Set the action bar's title.
|
||||||
String? toolbarTopFixedTitle;
|
String? toolbarTopFixedTitle;
|
||||||
|
|
||||||
///Set to `false` to not close the InAppBrowser when the user click on the back button and the WebView cannot go back to the history. The default value is `true`.
|
///Set to `false` to not close the InAppBrowser when the user click on the Android back button and the WebView cannot go back to the history. The default value is `true`.
|
||||||
bool closeOnCannotGoBack;
|
bool closeOnCannotGoBack;
|
||||||
|
|
||||||
|
///Set to `false` to block the InAppBrowser WebView going back when the user click on the Android back button. The default value is `true`.
|
||||||
|
bool allowGoBackWithBackButton;
|
||||||
|
|
||||||
|
///Set to `true` to close the InAppBrowser when the user click on the Android back button. The default value is `false`.
|
||||||
|
bool shouldCloseOnBackButtonPressed;
|
||||||
|
|
||||||
AndroidInAppBrowserOptions(
|
AndroidInAppBrowserOptions(
|
||||||
{this.hideTitleBar = false,
|
{this.hideTitleBar = false,
|
||||||
this.toolbarTopFixedTitle,
|
this.toolbarTopFixedTitle,
|
||||||
this.closeOnCannotGoBack = true});
|
this.closeOnCannotGoBack = true,
|
||||||
|
this.allowGoBackWithBackButton = true,
|
||||||
|
this.shouldCloseOnBackButtonPressed = false});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Map<String, dynamic> toMap() {
|
Map<String, dynamic> toMap() {
|
||||||
|
@ -25,6 +33,8 @@ class AndroidInAppBrowserOptions implements BrowserOptions, AndroidOptions {
|
||||||
"hideTitleBar": hideTitleBar,
|
"hideTitleBar": hideTitleBar,
|
||||||
"toolbarTopFixedTitle": toolbarTopFixedTitle,
|
"toolbarTopFixedTitle": toolbarTopFixedTitle,
|
||||||
"closeOnCannotGoBack": closeOnCannotGoBack,
|
"closeOnCannotGoBack": closeOnCannotGoBack,
|
||||||
|
"allowGoBackWithBackButton": allowGoBackWithBackButton,
|
||||||
|
"shouldCloseOnBackButtonPressed": shouldCloseOnBackButtonPressed,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -33,6 +43,8 @@ class AndroidInAppBrowserOptions implements BrowserOptions, AndroidOptions {
|
||||||
options.hideTitleBar = map["hideTitleBar"];
|
options.hideTitleBar = map["hideTitleBar"];
|
||||||
options.toolbarTopFixedTitle = map["toolbarTopFixedTitle"];
|
options.toolbarTopFixedTitle = map["toolbarTopFixedTitle"];
|
||||||
options.closeOnCannotGoBack = map["closeOnCannotGoBack"];
|
options.closeOnCannotGoBack = map["closeOnCannotGoBack"];
|
||||||
|
options.allowGoBackWithBackButton = map["allowGoBackWithBackButton"];
|
||||||
|
options.shouldCloseOnBackButtonPressed = map["shouldCloseOnBackButtonPressed"];
|
||||||
return options;
|
return options;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -91,7 +91,7 @@ class InAppBrowser {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
///Opens an [urlRequest] in a new [InAppBrowser] instance.
|
///Opens the [InAppBrowser] instance with an [urlRequest].
|
||||||
///
|
///
|
||||||
///[urlRequest]: The [urlRequest] to load.
|
///[urlRequest]: The [urlRequest] to load.
|
||||||
///
|
///
|
||||||
|
@ -119,7 +119,7 @@ class InAppBrowser {
|
||||||
await _sharedChannel.invokeMethod('open', args);
|
await _sharedChannel.invokeMethod('open', args);
|
||||||
}
|
}
|
||||||
|
|
||||||
///Opens the given [assetFilePath] file in a new [InAppBrowser] instance.
|
///Opens the [InAppBrowser] instance with the given [assetFilePath] file.
|
||||||
///
|
///
|
||||||
///[options]: Options for the [InAppBrowser].
|
///[options]: Options for the [InAppBrowser].
|
||||||
///
|
///
|
||||||
|
@ -177,7 +177,7 @@ class InAppBrowser {
|
||||||
await _sharedChannel.invokeMethod('open', args);
|
await _sharedChannel.invokeMethod('open', args);
|
||||||
}
|
}
|
||||||
|
|
||||||
///Opens a new [InAppBrowser] instance with [data] as a content, using [baseUrl] as the base URL for it.
|
///Opens the [InAppBrowser] instance with [data] as a content, using [baseUrl] as the base URL for it.
|
||||||
///
|
///
|
||||||
///The [mimeType] parameter specifies the format of the data. The default value is `"text/html"`.
|
///The [mimeType] parameter specifies the format of the data. The default value is `"text/html"`.
|
||||||
///
|
///
|
||||||
|
|
|
@ -15,7 +15,7 @@ class InAppLocalhostServer {
|
||||||
this._port = port;
|
this._port = port;
|
||||||
}
|
}
|
||||||
|
|
||||||
///Starts a server on http://localhost:[port]/.
|
///Starts the server on `http://localhost:[port]/`.
|
||||||
///
|
///
|
||||||
///**NOTE for iOS**: For the iOS Platform, you need to add the `NSAllowsLocalNetworking` key with `true` in the `Info.plist` file (See [ATS Configuration Basics](https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html#//apple_ref/doc/uid/TP40009251-SW35)):
|
///**NOTE for iOS**: For the iOS Platform, you need to add the `NSAllowsLocalNetworking` key with `true` in the `Info.plist` file (See [ATS Configuration Basics](https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html#//apple_ref/doc/uid/TP40009251-SW35)):
|
||||||
///```xml
|
///```xml
|
||||||
|
|
Loading…
Reference in New Issue