2019-10-28 03:58:25 +00:00
import ' dart:io ' ;
2019-11-29 15:59:18 +00:00
import ' content_blocker.dart ' ;
2019-10-31 02:20:07 +00:00
import ' types.dart ' ;
2019-10-26 20:11:23 +00:00
2019-10-31 02:20:07 +00:00
class AndroidOptions { }
2019-11-04 00:39:23 +00:00
class IosOptions { }
2019-10-31 02:20:07 +00:00
2019-10-26 20:11:23 +00:00
class WebViewOptions {
Map < String , dynamic > toMap ( ) {
return { } ;
}
2019-11-04 00:39:23 +00:00
static WebViewOptions fromMap ( Map < String , dynamic > map ) {
return null ;
}
2019-10-26 20:11:23 +00:00
}
2019-10-27 03:35:05 +00:00
class BrowserOptions {
Map < String , dynamic > toMap ( ) {
return { } ;
}
2019-11-04 00:39:23 +00:00
static BrowserOptions fromMap ( Map < String , dynamic > map ) {
return null ;
}
}
class ChromeSafariBrowserOptions {
Map < String , dynamic > toMap ( ) {
return { } ;
}
static ChromeSafariBrowserOptions fromMap ( Map < String , dynamic > map ) {
return null ;
}
2019-10-27 03:35:05 +00:00
}
2019-11-08 18:12:21 +00:00
///This class represents all the cross-platform WebView options available.
2019-11-04 00:39:23 +00:00
class InAppWebViewOptions implements WebViewOptions , BrowserOptions , AndroidOptions , IosOptions {
2019-11-08 18:12:21 +00:00
///Set to `true` to be able to listen at the [shouldOverrideUrlLoading] event. The default value is `false`.
2019-10-26 20:11:23 +00:00
bool useShouldOverrideUrlLoading ;
2019-11-08 18:12:21 +00:00
///Set to `true` to be able to listen at the [onLoadResource] event. The default value is `false`.
2019-10-26 20:11:23 +00:00
bool useOnLoadResource ;
2019-11-08 18:12:21 +00:00
///Set to `true` to be able to listen at the [onDownloadStart] event. The default value is `false`.
2019-10-26 20:11:23 +00:00
bool useOnDownloadStart ;
2019-11-08 18:12:21 +00:00
///Set to `true` to be able to listen at the [onTargetBlank] event. The default value is `false`.
2019-10-26 20:11:23 +00:00
bool useOnTargetBlank ;
2019-11-08 18:12:21 +00:00
///Set to `true` to have all the browser's cache cleared before the new window is opened. The default value is `false`.
2019-10-26 20:11:23 +00:00
bool clearCache ;
2019-11-08 18:12:21 +00:00
///Sets the user-agent for the WebView.
///
///**NOTE**: available on iOS 9.0+.
2019-10-26 20:11:23 +00:00
String userAgent ;
2019-11-08 18:12:21 +00:00
///Append to the existing user-agent. Setting userAgent will override this.
///
///**NOTE**: available on Android 17+ and on iOS 9.0+.
2019-11-07 23:32:29 +00:00
String applicationNameForUserAgent ;
2019-11-08 18:12:21 +00:00
///Set to `true` to enable JavaScript. The default value is `true`.
2019-10-26 20:11:23 +00:00
bool javaScriptEnabled ;
2019-11-08 18:12:21 +00:00
///Enables debugging of web contents (HTML / CSS / JavaScript) loaded into any WebViews of this application.
///This flag can be enabled in order to facilitate debugging of web layouts and JavaScript code running inside WebViews. The default is `false`.
///
///**NOTE**: on iOS the debugging mode is always enabled.
2019-10-29 16:51:55 +00:00
bool debuggingEnabled ;
2019-11-08 18:12:21 +00:00
///Set to `true` to allow JavaScript open windows without user interaction. The default value is `false`.
2019-10-26 20:11:23 +00:00
bool javaScriptCanOpenWindowsAutomatically ;
2019-11-08 18:12:21 +00:00
///Set to `true` to prevent HTML5 audio or video from autoplaying. The default value is `true`.
2019-11-08 21:31:57 +00:00
///
///**NOTE**: available on iOS 10.0+.
2019-10-26 20:11:23 +00:00
bool mediaPlaybackRequiresUserGesture ;
2019-11-08 18:12:21 +00:00
///Sets the minimum font size. The default value is `8` for Android, `0` for iOS.
2019-10-28 03:58:25 +00:00
int minimumFontSize ;
2019-11-08 18:12:21 +00:00
///Define whether the vertical scrollbar should be drawn or not. The default value is `true`.
2019-10-26 20:11:23 +00:00
bool verticalScrollBarEnabled ;
2019-11-08 18:12:21 +00:00
///Define whether the horizontal scrollbar should be drawn or not. The default value is `true`.
2019-10-26 20:11:23 +00:00
bool horizontalScrollBarEnabled ;
2019-11-08 18:12:21 +00:00
///List of custom schemes that the WebView must handle. Use the [onLoadResourceCustomScheme] event to intercept resource requests with custom scheme.
2019-11-08 21:31:57 +00:00
///
///**NOTE**: available on iOS 11.0+.
2019-10-26 20:11:23 +00:00
List < String > resourceCustomSchemes ;
2019-11-08 18:12:21 +00:00
///List of [ContentBlocker] that are a set of rules used to block content in the browser window.
2019-11-08 21:31:57 +00:00
///
///**NOTE**: available on iOS 11.0+.
2019-10-26 20:11:23 +00:00
List < ContentBlocker > contentBlockers ;
2019-11-09 22:35:18 +00:00
///Sets the content mode that the WebView needs to use when loading and rendering a webpage. The default value is [InAppWebViewUserPreferredContentMode.RECOMMENDED].
2019-11-08 18:12:21 +00:00
///
///**NOTE**: available on iOS 13.0+.
2019-10-31 22:09:54 +00:00
InAppWebViewUserPreferredContentMode preferredContentMode ;
2019-11-08 18:12:21 +00:00
///Set to `true` to be able to listen at the [shouldInterceptAjaxRequest] event. The default value is `false`.
2019-11-05 02:44:22 +00:00
bool useShouldInterceptAjaxRequest ;
2019-11-08 18:12:21 +00:00
///Set to `true` to be able to listen at the [shouldInterceptFetchRequest] event. The default value is `false`.
2019-11-05 02:44:22 +00:00
bool useShouldInterceptFetchRequest ;
2019-11-08 18:12:21 +00:00
///Set to `true` to open a browser window with incognito mode. The default value is `false`.
///
///**NOTE**: available on iOS 9.0+.
2019-11-07 23:32:29 +00:00
bool incognito ;
2019-11-08 18:12:21 +00:00
///Sets whether WebView should use browser caching. The default value is `true`.
///
///**NOTE**: available on iOS 9.0+.
2019-11-07 23:32:29 +00:00
bool cacheEnabled ;
2019-11-08 18:12:21 +00:00
///Set to `true` to make the background of the WebView transparent. If your app has a dark theme, this can prevent a white flash on initialization. The default value is `false`.
2019-11-07 23:32:29 +00:00
bool transparentBackground ;
2019-11-18 21:21:35 +00:00
///Set to `true` to disable vertical scroll. The default value is `false`.
bool disableVerticalScroll ;
///Set to `true` to disable horizontal scroll. The default value is `false`.
bool disableHorizontalScroll ;
2019-10-26 20:11:23 +00:00
InAppWebViewOptions ( { this . useShouldOverrideUrlLoading = false , this . useOnLoadResource = false , this . useOnDownloadStart = false , this . useOnTargetBlank = false ,
2019-11-07 23:32:29 +00:00
this . clearCache = false , this . userAgent = " " , this . applicationNameForUserAgent = " " , this . javaScriptEnabled = true , this . debuggingEnabled = false , this . javaScriptCanOpenWindowsAutomatically = false ,
2019-11-08 18:12:21 +00:00
this . mediaPlaybackRequiresUserGesture = true , this . minimumFontSize , this . verticalScrollBarEnabled = true , this . horizontalScrollBarEnabled = true ,
2019-11-05 02:44:22 +00:00
this . resourceCustomSchemes = const [ ] , this . contentBlockers = const [ ] , this . preferredContentMode = InAppWebViewUserPreferredContentMode . RECOMMENDED ,
2019-11-18 21:21:35 +00:00
this . useShouldInterceptAjaxRequest = false , this . useShouldInterceptFetchRequest = false , this . incognito = false , this . cacheEnabled = true , this . transparentBackground = false ,
this . disableVerticalScroll = false , this . disableHorizontalScroll = false } ) {
2019-10-28 03:58:25 +00:00
if ( this . minimumFontSize = = null )
this . minimumFontSize = Platform . isAndroid ? 8 : 0 ;
2019-11-02 18:58:01 +00:00
assert ( ! this . resourceCustomSchemes . contains ( " http " ) & & ! this . resourceCustomSchemes . contains ( " https " ) ) ;
2019-10-28 03:58:25 +00:00
}
2019-10-26 20:11:23 +00:00
@ override
Map < String , dynamic > toMap ( ) {
List < Map < String , Map < String , dynamic > > > contentBlockersMapList = [ ] ;
contentBlockers . forEach ( ( contentBlocker ) {
contentBlockersMapList . add ( contentBlocker . toMap ( ) ) ;
} ) ;
return {
" useShouldOverrideUrlLoading " : useShouldOverrideUrlLoading ,
" useOnLoadResource " : useOnLoadResource ,
" useOnDownloadStart " : useOnDownloadStart ,
" useOnTargetBlank " : useOnTargetBlank ,
" clearCache " : clearCache ,
" userAgent " : userAgent ,
2019-11-07 23:32:29 +00:00
" applicationNameForUserAgent " : applicationNameForUserAgent ,
2019-10-26 20:11:23 +00:00
" javaScriptEnabled " : javaScriptEnabled ,
2019-11-04 00:39:23 +00:00
" debuggingEnabled " : debuggingEnabled ,
2019-10-26 20:11:23 +00:00
" javaScriptCanOpenWindowsAutomatically " : javaScriptCanOpenWindowsAutomatically ,
" mediaPlaybackRequiresUserGesture " : mediaPlaybackRequiresUserGesture ,
" verticalScrollBarEnabled " : verticalScrollBarEnabled ,
" horizontalScrollBarEnabled " : horizontalScrollBarEnabled ,
" resourceCustomSchemes " : resourceCustomSchemes ,
" contentBlockers " : contentBlockersMapList ,
2019-11-05 02:44:22 +00:00
" preferredContentMode " : preferredContentMode ? . toValue ( ) ,
" useShouldInterceptAjaxRequest " : useShouldInterceptAjaxRequest ,
2019-11-07 23:32:29 +00:00
" useShouldInterceptFetchRequest " : useShouldInterceptFetchRequest ,
" incognito " : incognito ,
" cacheEnabled " : cacheEnabled ,
2019-11-18 21:21:35 +00:00
" transparentBackground " : transparentBackground ,
" disableVerticalScroll " : disableVerticalScroll ,
" disableHorizontalScroll " : disableHorizontalScroll
2019-10-26 20:11:23 +00:00
} ;
}
2019-11-04 00:39:23 +00:00
@ override
static InAppWebViewOptions fromMap ( Map < String , dynamic > map ) {
List < ContentBlocker > contentBlockers = [ ] ;
List < dynamic > contentBlockersMapList = map [ " contentBlockers " ] ;
if ( contentBlockersMapList ! = null ) {
contentBlockersMapList . forEach ( ( contentBlocker ) {
contentBlockers . add ( ContentBlocker . fromMap (
Map < dynamic , Map < dynamic , dynamic > > . from ( Map < dynamic , dynamic > . from ( contentBlocker ) )
) ) ;
} ) ;
}
InAppWebViewOptions options = new InAppWebViewOptions ( ) ;
options . useShouldOverrideUrlLoading = map [ " useShouldOverrideUrlLoading " ] ;
options . useOnLoadResource = map [ " useOnLoadResource " ] ;
options . useOnDownloadStart = map [ " useOnDownloadStart " ] ;
options . useOnTargetBlank = map [ " useOnTargetBlank " ] ;
options . clearCache = map [ " clearCache " ] ;
options . userAgent = map [ " userAgent " ] ;
2019-11-07 23:32:29 +00:00
options . applicationNameForUserAgent = map [ " applicationNameForUserAgent " ] ;
2019-11-04 00:39:23 +00:00
options . javaScriptEnabled = map [ " javaScriptEnabled " ] ;
2019-11-07 23:32:29 +00:00
options . debuggingEnabled = map [ " debuggingEnabled " ] ;
2019-11-04 00:39:23 +00:00
options . javaScriptCanOpenWindowsAutomatically = map [ " javaScriptCanOpenWindowsAutomatically " ] ;
options . mediaPlaybackRequiresUserGesture = map [ " mediaPlaybackRequiresUserGesture " ] ;
options . verticalScrollBarEnabled = map [ " verticalScrollBarEnabled " ] ;
options . horizontalScrollBarEnabled = map [ " horizontalScrollBarEnabled " ] ;
options . resourceCustomSchemes = List < String > . from ( map [ " resourceCustomSchemes " ] ? ? [ ] ) ;
options . contentBlockers = contentBlockers ;
options . preferredContentMode = InAppWebViewUserPreferredContentMode . fromValue ( map [ " preferredContentMode " ] ) ;
2019-11-07 23:32:29 +00:00
options . useShouldInterceptAjaxRequest = map [ " useShouldInterceptAjaxRequest " ] ;
options . useShouldInterceptFetchRequest = map [ " useShouldInterceptFetchRequest " ] ;
options . incognito = map [ " incognito " ] ;
options . cacheEnabled = map [ " cacheEnabled " ] ;
options . transparentBackground = map [ " transparentBackground " ] ;
2019-11-18 21:21:35 +00:00
options . disableVerticalScroll = map [ " disableVerticalScroll " ] ;
options . disableHorizontalScroll = map [ " disableHorizontalScroll " ] ;
2019-11-04 00:39:23 +00:00
return options ;
}
2019-10-26 20:11:23 +00:00
}
2019-11-08 21:31:57 +00:00
///This class represents all the Android-only WebView options available.
2019-10-31 02:20:07 +00:00
class AndroidInAppWebViewOptions implements WebViewOptions , BrowserOptions , AndroidOptions {
2019-11-25 22:04:17 +00:00
///Sets the text zoom of the page in percent. The default value is `100`.
2019-11-08 18:12:21 +00:00
int textZoom ;
///Set to `true` to have the session cookie cache cleared before the new window is opened.
2019-10-26 20:11:23 +00:00
bool clearSessionCache ;
2019-11-08 18:12:21 +00:00
///Set to `true` if the WebView should use its built-in zoom mechanisms. The default value is `false`.
2019-10-26 20:11:23 +00:00
bool builtInZoomControls ;
2019-11-08 18:12:21 +00:00
///Set to `true` if the WebView should display on-screen zoom controls when using the built-in zoom mechanisms. The default value is `false`.
2019-10-26 20:11:23 +00:00
bool displayZoomControls ;
2019-11-08 18:12:21 +00:00
///Set to `false` if the WebView should not support zooming using its on-screen zoom controls and gestures. The default value is `true`.
2019-10-26 20:11:23 +00:00
bool supportZoom ;
2019-11-08 18:12:21 +00:00
///Set to `true` if you want the database storage API is enabled. The default value is `false`.
2019-10-26 20:11:23 +00:00
bool databaseEnabled ;
2019-11-08 18:12:21 +00:00
///Set to `true` if you want the DOM storage API is enabled. The default value is `false`.
2019-10-26 20:11:23 +00:00
bool domStorageEnabled ;
2019-11-08 18:12:21 +00:00
///Set to `true` if the WebView should enable support for the "viewport" HTML meta tag or should use a wide viewport.
///When the value of the setting is false, the layout width is always set to the width of the WebView control in device-independent (CSS) pixels.
///When the value is true and the page contains the viewport meta tag, the value of the width specified in the tag is used.
///If the page does not contain the tag or does not provide a width, then a wide viewport will be used. The default value is `true`.
2019-10-26 20:11:23 +00:00
bool useWideViewPort ;
2019-11-08 18:12:21 +00:00
///Sets whether Safe Browsing is enabled. Safe Browsing allows WebView to protect against malware and phishing attacks by verifying the links.
///Safe Browsing is enabled by default for devices which support it.
///
///**NOTE**: available on Android 26+.
2019-10-26 20:11:23 +00:00
bool safeBrowsingEnabled ;
2019-11-08 18:12:21 +00:00
///Configures the WebView's behavior when a secure origin attempts to load a resource from an insecure origin.
///
///**NOTE**: available on Android 21+.
2019-10-28 03:58:25 +00:00
AndroidInAppWebViewMixedContentMode mixedContentMode ;
2019-11-08 18:12:21 +00:00
///Enables or disables content URL access within WebView. Content URL access allows WebView to load content from a content provider installed in the system. The default value is `true`.
2019-10-28 03:58:25 +00:00
bool allowContentAccess ;
2019-11-08 18:12:21 +00:00
///Enables or disables file access within WebView. Note that this enables or disables file system access only.
///Assets and resources are still accessible using \file:///android_asset` and `file:///android_res`. The default value is `true`.
2019-10-28 03:58:25 +00:00
bool allowFileAccess ;
2019-11-08 18:12:21 +00:00
///Sets whether JavaScript running in the context of a file scheme URL should be allowed to access content from other file scheme URLs.
///Note that the value of this setting is ignored if the value of [allowFileAccessFromFileURLs] is `true`.
///Note too, that this setting affects only JavaScript access to file scheme resources. The default value is `false`.
2019-10-28 03:58:25 +00:00
bool allowFileAccessFromFileURLs ;
2019-11-08 18:12:21 +00:00
///Sets whether JavaScript running in the context of a file scheme URL should be allowed to access content from any origin.
///Note that this setting affects only JavaScript access to file scheme resources.
///This includes access to content from other file scheme URLs. The default value is `false`.
2019-10-28 03:58:25 +00:00
bool allowUniversalAccessFromFileURLs ;
2019-11-08 18:12:21 +00:00
///Sets the path to the Application Caches files. In order for the Application Caches API to be enabled, this option must be set a path to which the application can write.
///This option is used one time: repeated calls are ignored.
2019-10-28 03:58:25 +00:00
String appCachePath ;
2019-11-08 18:12:21 +00:00
///Sets whether the WebView should not load image resources from the network (resources accessed via http and https URI schemes). The default value is `false`.
2019-10-28 03:58:25 +00:00
bool blockNetworkImage ;
2019-11-08 18:12:21 +00:00
///Sets whether the WebView should not load resources from the network. The default value is `false`.
2019-10-28 03:58:25 +00:00
bool blockNetworkLoads ;
2019-11-08 18:12:21 +00:00
///Overrides the way the cache is used. The way the cache is used is based on the navigation type. For a normal page load, the cache is checked and content is re-validated as needed.
///When navigating back, content is not revalidated, instead the content is just retrieved from the cache. The default value is [AndroidInAppWebViewCacheMode.LOAD_DEFAULT].
2019-10-28 03:58:25 +00:00
AndroidInAppWebViewCacheMode cacheMode ;
2019-11-08 18:12:21 +00:00
///Sets the cursive font family name. The default value is `"cursive"`.
2019-10-28 03:58:25 +00:00
String cursiveFontFamily ;
2019-11-08 18:12:21 +00:00
///Sets the default fixed font size. The default value is `16`.
2019-10-28 03:58:25 +00:00
int defaultFixedFontSize ;
2019-11-08 18:12:21 +00:00
///Sets the default font size. The default value is `16`.
2019-10-28 03:58:25 +00:00
int defaultFontSize ;
2019-11-08 18:12:21 +00:00
///Sets the default text encoding name to use when decoding html pages. The default value is `"UTF-8"`.
2019-10-28 03:58:25 +00:00
String defaultTextEncodingName ;
2019-11-08 18:12:21 +00:00
///Disables the action mode menu items according to menuItems flag.
///
///**NOTE**: available on Android 24+.
2019-10-28 03:58:25 +00:00
AndroidInAppWebViewModeMenuItem disabledActionModeMenuItems ;
2019-11-08 18:12:21 +00:00
///Sets the fantasy font family name. The default value is `"fantasy"`.
2019-10-28 03:58:25 +00:00
String fantasyFontFamily ;
2019-11-08 18:12:21 +00:00
///Sets the fixed font family name. The default value is `"monospace"`.
2019-10-28 03:58:25 +00:00
String fixedFontFamily ;
2019-11-08 18:12:21 +00:00
///Set the force dark mode for this WebView. The default value is [AndroidInAppWebViewForceDark.FORCE_DARK_OFF].
///
///**NOTE**: available on Android 29+.
2019-10-28 03:58:25 +00:00
AndroidInAppWebViewForceDark forceDark ;
2019-11-08 18:12:21 +00:00
///Sets whether Geolocation API is enabled. The default value is `true`.
2019-10-28 03:58:25 +00:00
bool geolocationEnabled ;
2019-11-08 18:12:21 +00:00
///Sets the underlying layout algorithm. This will cause a re-layout of the WebView.
2019-10-28 03:58:25 +00:00
AndroidInAppWebViewLayoutAlgorithm layoutAlgorithm ;
2019-11-08 18:12:21 +00:00
///Sets whether the WebView loads pages in overview mode, that is, zooms out the content to fit on screen by width.
///This setting is taken into account when the content width is greater than the width of the WebView control, for example, when [useWideViewPort] is enabled.
///The default value is `false`.
2019-10-28 03:58:25 +00:00
bool loadWithOverviewMode ;
2019-11-08 18:12:21 +00:00
///Sets whether the WebView should load image resources. Note that this method controls loading of all images, including those embedded using the data URI scheme.
///Note that if the value of this setting is changed from false to true, all images resources referenced by content currently displayed by the WebView are loaded automatically.
///The default value is `true`.
2019-10-28 03:58:25 +00:00
bool loadsImagesAutomatically ;
2019-11-08 18:12:21 +00:00
///Sets the minimum logical font size. The default is `8`.
2019-10-28 03:58:25 +00:00
int minimumLogicalFontSize ;
2019-11-25 22:04:17 +00:00
///Sets the initial scale for this WebView. 0 means default. The behavior for the default scale depends on the state of [useWideViewPort] and [loadWithOverviewMode].
2019-11-08 18:12:21 +00:00
///If the content fits into the WebView control by width, then the zoom is set to 100%. For wide content, the behavior depends on the state of [loadWithOverviewMode].
///If its value is true, the content will be zoomed out to be fit by width into the WebView control, otherwise not.
///If initial scale is greater than 0, WebView starts with this value as initial scale.
///Please note that unlike the scale properties in the viewport meta tag, this method doesn't take the screen density into account.
///The default is `0`.
2019-11-08 06:39:15 +00:00
int initialScale ;
2019-11-08 18:12:21 +00:00
///Tells the WebView whether it needs to set a node. The default value is `true`.
2019-10-28 03:58:25 +00:00
bool needInitialFocus ;
2019-11-08 18:12:21 +00:00
///Sets whether this WebView should raster tiles when it is offscreen but attached to a window.
///Turning this on can avoid rendering artifacts when animating an offscreen WebView on-screen.
///Offscreen WebViews in this mode use more memory. The default value is `false`.
///
///**NOTE**: available on Android 23+.
2019-10-28 03:58:25 +00:00
bool offscreenPreRaster ;
2019-11-08 18:12:21 +00:00
///Sets the sans-serif font family name. The default value is `"sans-serif"`.
2019-10-28 03:58:25 +00:00
String sansSerifFontFamily ;
2019-11-08 18:12:21 +00:00
///Sets the serif font family name. The default value is `"sans-serif"`.
2019-10-28 03:58:25 +00:00
String serifFontFamily ;
2019-11-08 18:12:21 +00:00
///Sets the standard font family name. The default value is `"sans-serif"`.
2019-10-28 03:58:25 +00:00
String standardFontFamily ;
2019-11-08 18:12:21 +00:00
///Sets whether the WebView should save form data. In Android O, the platform has implemented a fully functional Autofill feature to store form data.
///Therefore, the Webview form data save feature is disabled. Note that the feature will continue to be supported on older versions of Android as before.
2019-11-07 23:32:29 +00:00
bool saveFormData ;
2019-11-08 18:12:21 +00:00
///Boolean value to enable third party cookies in the WebView.
///Used on Android Lollipop and above only as third party cookies are enabled by default on Android Kitkat and below and on iOS.
///The default value is `true`.
///
///**NOTE**: available on Android 21+.
2019-11-07 23:32:29 +00:00
bool thirdPartyCookiesEnabled ;
2019-11-08 18:12:21 +00:00
///Boolean value to enable Hardware Acceleration in the WebView.
///The default value is `true`.
2019-11-07 23:32:29 +00:00
bool hardwareAcceleration ;
2019-10-26 20:11:23 +00:00
2019-11-08 18:12:21 +00:00
AndroidInAppWebViewOptions ( { this . textZoom = 100 , this . clearSessionCache = false , this . builtInZoomControls = false , this . displayZoomControls = false , this . supportZoom = true , this . databaseEnabled = false ,
2019-11-07 23:32:29 +00:00
this . domStorageEnabled = false , this . useWideViewPort = true , this . safeBrowsingEnabled = true , this . mixedContentMode ,
2019-11-08 18:12:21 +00:00
this . allowContentAccess = true , this . allowFileAccess = true , this . allowFileAccessFromFileURLs = false , this . allowUniversalAccessFromFileURLs = false ,
2019-11-07 23:32:29 +00:00
this . appCachePath , this . blockNetworkImage = false , this . blockNetworkLoads = false , this . cacheMode = AndroidInAppWebViewCacheMode . LOAD_DEFAULT ,
2019-10-28 03:58:25 +00:00
this . cursiveFontFamily = " cursive " , this . defaultFixedFontSize = 16 , this . defaultFontSize = 16 , this . defaultTextEncodingName = " UTF-8 " ,
this . disabledActionModeMenuItems , this . fantasyFontFamily = " fantasy " , this . fixedFontFamily = " monospace " , this . forceDark = AndroidInAppWebViewForceDark . FORCE_DARK_OFF ,
this . geolocationEnabled = true , this . layoutAlgorithm , this . loadWithOverviewMode = true , this . loadsImagesAutomatically = true ,
this . minimumLogicalFontSize = 8 , this . needInitialFocus = true , this . offscreenPreRaster = false , this . sansSerifFontFamily = " sans-serif " , this . serifFontFamily = " sans-serif " ,
2019-11-08 18:12:21 +00:00
this . standardFontFamily = " sans-serif " , this . saveFormData = true , this . thirdPartyCookiesEnabled = true , this . hardwareAcceleration = true , this . initialScale = 0
2019-10-28 03:58:25 +00:00
} ) ;
2019-10-26 20:11:23 +00:00
@ override
Map < String , dynamic > toMap ( ) {
return {
2019-11-08 18:12:21 +00:00
" textZoom " : textZoom ,
2019-10-26 20:11:23 +00:00
" clearSessionCache " : clearSessionCache ,
" builtInZoomControls " : builtInZoomControls ,
" displayZoomControls " : displayZoomControls ,
" supportZoom " : supportZoom ,
" databaseEnabled " : databaseEnabled ,
" domStorageEnabled " : domStorageEnabled ,
" useWideViewPort " : useWideViewPort ,
" safeBrowsingEnabled " : safeBrowsingEnabled ,
2019-10-28 03:58:25 +00:00
" mixedContentMode " : mixedContentMode ? . toValue ( ) ,
" allowContentAccess " : allowContentAccess ,
" allowFileAccess " : allowFileAccess ,
" allowFileAccessFromFileURLs " : allowFileAccessFromFileURLs ,
" allowUniversalAccessFromFileURLs " : allowUniversalAccessFromFileURLs ,
" appCachePath " : appCachePath ,
" blockNetworkImage " : blockNetworkImage ,
" blockNetworkLoads " : blockNetworkLoads ,
" cacheMode " : cacheMode ? . toValue ( ) ,
" cursiveFontFamily " : cursiveFontFamily ,
" defaultFixedFontSize " : defaultFixedFontSize ,
" defaultFontSize " : defaultFontSize ,
" defaultTextEncodingName " : defaultTextEncodingName ,
" disabledActionModeMenuItems " : disabledActionModeMenuItems ? . toValue ( ) ,
" fantasyFontFamily " : fantasyFontFamily ,
" fixedFontFamily " : fixedFontFamily ,
" forceDark " : forceDark ? . toValue ( ) ,
" geolocationEnabled " : geolocationEnabled ,
" layoutAlgorithm " : layoutAlgorithm ? . toValue ( ) ,
" loadWithOverviewMode " : loadWithOverviewMode ,
" loadsImagesAutomatically " : loadsImagesAutomatically ,
" minimumLogicalFontSize " : minimumLogicalFontSize ,
2019-11-08 06:39:15 +00:00
" initialScale " : initialScale ,
2019-10-28 03:58:25 +00:00
" needInitialFocus " : needInitialFocus ,
" offscreenPreRaster " : offscreenPreRaster ,
" sansSerifFontFamily " : sansSerifFontFamily ,
" serifFontFamily " : serifFontFamily ,
2019-11-07 23:32:29 +00:00
" standardFontFamily " : standardFontFamily ,
" saveFormData " : saveFormData ,
" thirdPartyCookiesEnabled " : thirdPartyCookiesEnabled ,
" hardwareAcceleration " : hardwareAcceleration
2019-10-26 20:11:23 +00:00
} ;
}
2019-11-04 00:39:23 +00:00
@ override
static AndroidInAppWebViewOptions fromMap ( Map < String , dynamic > map ) {
AndroidInAppWebViewOptions options = new AndroidInAppWebViewOptions ( ) ;
2019-11-08 18:12:21 +00:00
options . textZoom = map [ " textZoom " ] ;
2019-11-04 00:39:23 +00:00
options . clearSessionCache = map [ " clearSessionCache " ] ;
options . builtInZoomControls = map [ " builtInZoomControls " ] ;
options . displayZoomControls = map [ " displayZoomControls " ] ;
options . supportZoom = map [ " supportZoom " ] ;
options . databaseEnabled = map [ " databaseEnabled " ] ;
options . domStorageEnabled = map [ " domStorageEnabled " ] ;
options . useWideViewPort = map [ " useWideViewPort " ] ;
options . safeBrowsingEnabled = map [ " safeBrowsingEnabled " ] ;
options . mixedContentMode = AndroidInAppWebViewMixedContentMode . fromValue ( map [ " mixedContentMode " ] ) ;
options . allowContentAccess = map [ " allowContentAccess " ] ;
options . allowFileAccess = map [ " allowFileAccess " ] ;
options . allowFileAccessFromFileURLs = map [ " allowFileAccessFromFileURLs " ] ;
options . allowUniversalAccessFromFileURLs = map [ " allowUniversalAccessFromFileURLs " ] ;
options . appCachePath = map [ " appCachePath " ] ;
options . blockNetworkImage = map [ " blockNetworkImage " ] ;
options . blockNetworkLoads = map [ " blockNetworkLoads " ] ;
options . cacheMode = AndroidInAppWebViewCacheMode . fromValue ( map [ " cacheMode " ] ) ;
options . cursiveFontFamily = map [ " cursiveFontFamily " ] ;
options . defaultFixedFontSize = map [ " defaultFixedFontSize " ] ;
options . defaultFontSize = map [ " defaultFontSize " ] ;
options . defaultTextEncodingName = map [ " defaultTextEncodingName " ] ;
options . disabledActionModeMenuItems = AndroidInAppWebViewModeMenuItem . fromValue ( map [ " disabledActionModeMenuItems " ] ) ;
options . fantasyFontFamily = map [ " fantasyFontFamily " ] ;
options . fixedFontFamily = map [ " fixedFontFamily " ] ;
options . forceDark = AndroidInAppWebViewForceDark . fromValue ( map [ " forceDark " ] ) ;
options . geolocationEnabled = map [ " geolocationEnabled " ] ;
options . layoutAlgorithm = AndroidInAppWebViewLayoutAlgorithm . fromValue ( map [ " layoutAlgorithm " ] ) ;
options . loadWithOverviewMode = map [ " loadWithOverviewMode " ] ;
options . loadsImagesAutomatically = map [ " loadsImagesAutomatically " ] ;
options . minimumLogicalFontSize = map [ " minimumLogicalFontSize " ] ;
2019-11-08 06:39:15 +00:00
options . initialScale = map [ " initialScale " ] ;
2019-11-04 00:39:23 +00:00
options . needInitialFocus = map [ " needInitialFocus " ] ;
options . offscreenPreRaster = map [ " offscreenPreRaster " ] ;
options . sansSerifFontFamily = map [ " sansSerifFontFamily " ] ;
options . serifFontFamily = map [ " serifFontFamily " ] ;
options . standardFontFamily = map [ " standardFontFamily " ] ;
2019-11-07 23:32:29 +00:00
options . saveFormData = map [ " saveFormData " ] ;
options . thirdPartyCookiesEnabled = map [ " thirdPartyCookiesEnabled " ] ;
options . hardwareAcceleration = map [ " hardwareAcceleration " ] ;
2019-11-04 00:39:23 +00:00
return options ;
}
2019-10-26 20:11:23 +00:00
}
2019-11-08 21:31:57 +00:00
///This class represents all the iOS-only WebView options available.
2019-11-04 00:39:23 +00:00
class IosInAppWebViewOptions implements WebViewOptions , BrowserOptions , IosOptions {
2019-11-08 21:31:57 +00:00
///Set to `true` to disable the bouncing of the WebView when the scrolling has reached an edge of the content. The default value is `false`.
2019-10-26 20:11:23 +00:00
bool disallowOverScroll ;
2019-11-08 21:31:57 +00:00
///Set to `true` to allow a viewport meta tag to either disable or restrict the range of user scaling. The default value is `false`.
2019-10-26 20:11:23 +00:00
bool enableViewportScale ;
2019-11-08 21:31:57 +00:00
///Set to `true` if you want the WebView suppresses content rendering until it is fully loaded into memory. The default value is `false`.
2019-10-26 20:11:23 +00:00
bool suppressesIncrementalRendering ;
2019-11-08 21:31:57 +00:00
///Set to `true` to allow AirPlay. The default value is `true`.
2019-10-26 20:11:23 +00:00
bool allowsAirPlayForMediaPlayback ;
2019-11-08 21:31:57 +00:00
///Set to `true` to allow the horizontal swipe gestures trigger back-forward list navigations. The default value is `true`.
2019-10-26 20:11:23 +00:00
bool allowsBackForwardNavigationGestures ;
2019-11-08 21:31:57 +00:00
///Set to `true` to allow that pressing on a link displays a preview of the destination for the link. The default value is `true`.
///
///**NOTE**: available on iOS 9.0+.
2019-10-26 20:11:23 +00:00
bool allowsLinkPreview ;
2019-11-08 21:31:57 +00:00
///Set to `true` if you want that the WebView should always allow scaling of the webpage, regardless of the author's intent.
///The ignoresViewportScaleLimits property overrides the `user-scalable` HTML property in a webpage. The default value is `false`.
2019-10-26 20:11:23 +00:00
bool ignoresViewportScaleLimits ;
2019-11-08 21:31:57 +00:00
///Set to `true` to allow HTML5 media playback to appear inline within the screen layout, using browser-supplied controls rather than native controls.
///For this to work, add the `webkit-playsinline` attribute to any `<video>` elements. The default value is `false`.
2019-10-26 20:11:23 +00:00
bool allowsInlineMediaPlayback ;
2019-11-08 21:31:57 +00:00
///Set to `true` to allow HTML5 videos play picture-in-picture. The default value is `true`.
///
///**NOTE**: available on iOS 9.0+.
2019-10-26 20:11:23 +00:00
bool allowsPictureInPictureMediaPlayback ;
2019-11-08 21:31:57 +00:00
///A Boolean value indicating whether warnings should be shown for suspected fraudulent content such as phishing or malware.
///According to the official documentation, this feature is currently available in the following region: China.
///The default value is `true`.
///
///**NOTE**: available on iOS 13.0+.
2019-10-28 03:58:25 +00:00
bool isFraudulentWebsiteWarningEnabled ;
2019-11-08 21:31:57 +00:00
///The level of granularity with which the user can interactively select content in the web view.
///The default value is [IosInAppWebViewSelectionGranularity.DYNAMIC]
2019-11-04 00:39:23 +00:00
IosInAppWebViewSelectionGranularity selectionGranularity ;
2019-11-08 21:31:57 +00:00
///Specifying a dataDetectoryTypes value adds interactivity to web content that matches the value.
///For example, Safari adds a link to “apple.com” in the text “Visit apple.com” if the dataDetectorTypes property is set to [IosInAppWebViewDataDetectorTypes.LINK].
///The default value is [IosInAppWebViewDataDetectorTypes.NONE].
///
///**NOTE**: available on iOS 10.0+.
2019-11-04 00:39:23 +00:00
List < IosInAppWebViewDataDetectorTypes > dataDetectorTypes ;
2019-11-08 21:31:57 +00:00
///Set `true` if shared cookies from `HTTPCookieStorage.shared` should used for every load request in the WebView.
///The default value is `false`.
///
///**NOTE**: available on iOS 11.0+.
2019-11-07 23:32:29 +00:00
bool sharedCookiesEnabled ;
2019-10-28 03:58:25 +00:00
2019-11-04 00:39:23 +00:00
IosInAppWebViewOptions ( { this . disallowOverScroll = false , this . enableViewportScale = false , this . suppressesIncrementalRendering = false , this . allowsAirPlayForMediaPlayback = true ,
2019-10-26 20:11:23 +00:00
this . allowsBackForwardNavigationGestures = true , this . allowsLinkPreview = true , this . ignoresViewportScaleLimits = false , this . allowsInlineMediaPlayback = false ,
2019-11-07 23:32:29 +00:00
this . allowsPictureInPictureMediaPlayback = true , this . isFraudulentWebsiteWarningEnabled = true ,
this . selectionGranularity = IosInAppWebViewSelectionGranularity . DYNAMIC , this . dataDetectorTypes = const [ IosInAppWebViewDataDetectorTypes . NONE ] , this . sharedCookiesEnabled = false
2019-10-28 03:58:25 +00:00
} ) ;
2019-10-26 20:11:23 +00:00
@ override
Map < String , dynamic > toMap ( ) {
2019-10-28 03:58:25 +00:00
List < String > dataDetectorTypesList = [ ] ;
dataDetectorTypes . forEach ( ( dataDetectorType ) {
dataDetectorTypesList . add ( dataDetectorType . toValue ( ) ) ;
} ) ;
2019-10-26 20:11:23 +00:00
return {
" disallowOverScroll " : disallowOverScroll ,
" enableViewportScale " : enableViewportScale ,
" suppressesIncrementalRendering " : suppressesIncrementalRendering ,
" allowsAirPlayForMediaPlayback " : allowsAirPlayForMediaPlayback ,
" allowsBackForwardNavigationGestures " : allowsBackForwardNavigationGestures ,
" allowsLinkPreview " : allowsLinkPreview ,
" ignoresViewportScaleLimits " : ignoresViewportScaleLimits ,
" allowsInlineMediaPlayback " : allowsInlineMediaPlayback ,
" allowsPictureInPictureMediaPlayback " : allowsPictureInPictureMediaPlayback ,
2019-10-28 03:58:25 +00:00
" isFraudulentWebsiteWarningEnabled " : isFraudulentWebsiteWarningEnabled ,
" selectionGranularity " : selectionGranularity . toValue ( ) ,
2019-11-07 23:32:29 +00:00
" dataDetectorTypes " : dataDetectorTypesList ,
" sharedCookiesEnabled " : sharedCookiesEnabled
2019-10-26 20:11:23 +00:00
} ;
}
2019-11-04 00:39:23 +00:00
@ override
static IosInAppWebViewOptions fromMap ( Map < String , dynamic > map ) {
List < IosInAppWebViewDataDetectorTypes > dataDetectorTypes = [ ] ;
List < String > dataDetectorTypesList = List < String > . from ( map [ " dataDetectorTypes " ] ? ? [ ] ) ;
dataDetectorTypesList . forEach ( ( dataDetectorType ) {
dataDetectorTypes . add ( IosInAppWebViewDataDetectorTypes . fromValue ( dataDetectorType ) ) ;
} ) ;
IosInAppWebViewOptions options = new IosInAppWebViewOptions ( ) ;
options . disallowOverScroll = map [ " disallowOverScroll " ] ;
options . enableViewportScale = map [ " enableViewportScale " ] ;
options . suppressesIncrementalRendering = map [ " suppressesIncrementalRendering " ] ;
options . allowsAirPlayForMediaPlayback = map [ " allowsAirPlayForMediaPlayback " ] ;
options . allowsBackForwardNavigationGestures = map [ " allowsBackForwardNavigationGestures " ] ;
options . allowsLinkPreview = map [ " allowsLinkPreview " ] ;
options . ignoresViewportScaleLimits = map [ " ignoresViewportScaleLimits " ] ;
options . allowsInlineMediaPlayback = map [ " allowsInlineMediaPlayback " ] ;
options . allowsPictureInPictureMediaPlayback = map [ " allowsPictureInPictureMediaPlayback " ] ;
options . isFraudulentWebsiteWarningEnabled = map [ " isFraudulentWebsiteWarningEnabled " ] ;
options . selectionGranularity = IosInAppWebViewSelectionGranularity . fromValue ( map [ " selectionGranularity " ] ) ;
options . dataDetectorTypes = dataDetectorTypes ;
2019-11-07 23:32:29 +00:00
options . sharedCookiesEnabled = map [ " sharedCookiesEnabled " ] ;
2019-11-04 00:39:23 +00:00
return options ;
}
2019-10-26 20:11:23 +00:00
}
2019-11-08 21:31:57 +00:00
///This class represents all the cross-platform [InAppBrowser] options available.
2019-11-04 00:39:23 +00:00
class InAppBrowserOptions implements BrowserOptions , AndroidOptions , IosOptions {
2019-11-08 21:31:57 +00:00
///Set to `true` to create the browser and load the page, but not show it. Omit or set to `false` to have the browser open and load normally.
///The default value is `false`.
2019-10-26 20:11:23 +00:00
bool hidden ;
2019-11-08 21:31:57 +00:00
///Set to `false` to hide the toolbar at the top of the WebView. The default value is `true`.
2019-10-26 20:11:23 +00:00
bool toolbarTop ;
2019-11-08 21:31:57 +00:00
///Set the custom background color of the toolbar at the top.
2019-10-26 20:11:23 +00:00
String toolbarTopBackgroundColor ;
2019-11-08 21:31:57 +00:00
///Set to `true` to hide the url bar on the toolbar at the top. The default value is `false`.
2019-10-26 20:11:23 +00:00
bool hideUrlBar ;
2019-11-08 21:31:57 +00:00
InAppBrowserOptions ( { this . hidden = false , this . toolbarTop = true , this . toolbarTopBackgroundColor = " " , this . hideUrlBar = false } ) ;
2019-10-26 20:11:23 +00:00
@ override
Map < String , dynamic > toMap ( ) {
return {
" hidden " : hidden ,
" toolbarTop " : toolbarTop ,
" toolbarTopBackgroundColor " : toolbarTopBackgroundColor ,
2019-11-04 00:39:23 +00:00
" hideUrlBar " : hideUrlBar
2019-10-26 20:11:23 +00:00
} ;
}
2019-11-04 00:39:23 +00:00
@ override
static InAppBrowserOptions fromMap ( Map < String , dynamic > map ) {
InAppBrowserOptions options = new InAppBrowserOptions ( ) ;
options . hidden = map [ " hidden " ] ;
options . toolbarTop = map [ " toolbarTop " ] ;
options . toolbarTopBackgroundColor = map [ " toolbarTopBackgroundColor " ] ;
options . hideUrlBar = map [ " hideUrlBar " ] ;
return options ;
}
2019-10-26 20:11:23 +00:00
}
2019-11-08 21:31:57 +00:00
///This class represents all the Android-only [InAppBrowser] options available.
2019-10-31 02:20:07 +00:00
class AndroidInAppBrowserOptions implements BrowserOptions , AndroidOptions {
2019-11-08 21:31:57 +00:00
///Set to `true` if you want the title should be displayed. The default value is `false`.
2019-10-26 20:11:23 +00:00
bool hideTitleBar ;
2019-11-08 21:31:57 +00:00
///Set the action bar's title.
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`.
2019-10-26 20:11:23 +00:00
bool closeOnCannotGoBack ;
2019-11-08 21:31:57 +00:00
///Set to `false` to hide the progress bar at the bottom of the toolbar at the top. The default value is `true`.
2019-10-26 20:11:23 +00:00
bool progressBar ;
2019-11-08 21:31:57 +00:00
AndroidInAppBrowserOptions ( { this . hideTitleBar = true , this . toolbarTopFixedTitle = " " , this . closeOnCannotGoBack = true , this . progressBar = true } ) ;
2019-10-26 20:11:23 +00:00
@ override
Map < String , dynamic > toMap ( ) {
return {
" hideTitleBar " : hideTitleBar ,
2019-11-08 21:31:57 +00:00
" toolbarTopFixedTitle " : toolbarTopFixedTitle ,
2019-10-26 20:11:23 +00:00
" closeOnCannotGoBack " : closeOnCannotGoBack ,
" progressBar " : progressBar ,
} ;
}
2019-11-04 00:39:23 +00:00
@ override
static AndroidInAppBrowserOptions fromMap ( Map < String , dynamic > map ) {
AndroidInAppBrowserOptions options = new AndroidInAppBrowserOptions ( ) ;
options . hideTitleBar = map [ " hideTitleBar " ] ;
2019-11-08 21:31:57 +00:00
options . toolbarTopFixedTitle = map [ " toolbarTopFixedTitle " ] ;
2019-11-04 00:39:23 +00:00
options . closeOnCannotGoBack = map [ " closeOnCannotGoBack " ] ;
options . progressBar = map [ " progressBar " ] ;
return options ;
}
2019-10-26 20:11:23 +00:00
}
2019-11-08 21:31:57 +00:00
///This class represents all the iOS-only [InAppBrowser] options available.
2019-11-04 00:39:23 +00:00
class IosInAppBrowserOptions implements BrowserOptions , IosOptions {
2019-11-08 21:31:57 +00:00
///Set to `false` to hide the toolbar at the bottom of the WebView. The default value is `true`.
2019-10-26 20:11:23 +00:00
bool toolbarBottom ;
2019-11-08 21:31:57 +00:00
///Set the custom background color of the toolbar at the bottom.
2019-10-26 20:11:23 +00:00
String toolbarBottomBackgroundColor ;
2019-11-08 21:31:57 +00:00
///Set to `true` to set the toolbar at the bottom translucent. The default value is `true`.
2019-10-26 20:11:23 +00:00
bool toolbarBottomTranslucent ;
2019-11-08 21:31:57 +00:00
///Set the custom text for the close button.
2019-10-26 20:11:23 +00:00
String closeButtonCaption ;
2019-11-08 21:31:57 +00:00
///Set the custom color for the close button.
2019-10-26 20:11:23 +00:00
String closeButtonColor ;
2019-11-08 21:31:57 +00:00
///Set the custom modal presentation style when presenting the WebView. The default value is [IosWebViewOptionsPresentationStyle.FULL_SCREEN].
2019-11-04 00:39:23 +00:00
IosWebViewOptionsPresentationStyle presentationStyle ;
2019-11-08 21:31:57 +00:00
///Set to the custom transition style when presenting the WebView. The default value is [IosWebViewOptionsTransitionStyle.COVER_VERTICAL].
2019-11-04 00:39:23 +00:00
IosWebViewOptionsTransitionStyle transitionStyle ;
2019-11-08 21:31:57 +00:00
///Set to `false` to hide the spinner when the WebView is loading a page. The default value is `true`.
2019-10-26 20:11:23 +00:00
bool spinner ;
2019-11-04 00:39:23 +00:00
IosInAppBrowserOptions ( { this . toolbarBottom = true , this . toolbarBottomBackgroundColor = " " , this . toolbarBottomTranslucent = true , this . closeButtonCaption = " " ,
this . closeButtonColor = " " , this . presentationStyle = IosWebViewOptionsPresentationStyle . FULL_SCREEN ,
this . transitionStyle = IosWebViewOptionsTransitionStyle . COVER_VERTICAL , this . spinner = true } ) ;
2019-10-26 20:11:23 +00:00
@ override
Map < String , dynamic > toMap ( ) {
return {
" toolbarBottom " : toolbarBottom ,
" toolbarBottomBackgroundColor " : toolbarBottomBackgroundColor ,
" toolbarBottomTranslucent " : toolbarBottomTranslucent ,
" closeButtonCaption " : closeButtonCaption ,
" closeButtonColor " : closeButtonColor ,
2019-10-29 14:27:50 +00:00
" presentationStyle " : presentationStyle . toValue ( ) ,
" transitionStyle " : transitionStyle . toValue ( ) ,
2019-11-04 00:39:23 +00:00
" spinner " : spinner
2019-10-26 20:11:23 +00:00
} ;
}
2019-11-04 00:39:23 +00:00
@ override
static IosInAppBrowserOptions fromMap ( Map < String , dynamic > map ) {
IosInAppBrowserOptions options = new IosInAppBrowserOptions ( ) ;
options . toolbarBottom = map [ " toolbarBottom " ] ;
options . toolbarBottomBackgroundColor = map [ " toolbarBottomBackgroundColor " ] ;
options . toolbarBottomTranslucent = map [ " toolbarBottomTranslucent " ] ;
options . closeButtonCaption = map [ " closeButtonCaption " ] ;
options . closeButtonColor = map [ " closeButtonColor " ] ;
options . presentationStyle = IosWebViewOptionsPresentationStyle . fromValue ( map [ " presentationStyle " ] ) ;
options . transitionStyle = IosWebViewOptionsTransitionStyle . fromValue ( map [ " transitionStyle " ] ) ;
options . spinner = map [ " spinner " ] ;
return options ;
2019-10-27 03:35:05 +00:00
}
}
2019-11-08 21:31:57 +00:00
///This class represents all the Android-only [ChromeSafariBrowser] options available.
2019-10-31 02:20:07 +00:00
class AndroidChromeCustomTabsOptions implements ChromeSafariBrowserOptions , AndroidOptions {
2019-11-08 21:31:57 +00:00
///Set to `false` if you don't want the default share button. The default value is `true`.
2019-10-26 20:11:23 +00:00
bool addShareButton ;
2019-11-08 21:31:57 +00:00
///Set to `false` if the title shouldn't be shown in the custom tab. The default value is `true`.
2019-10-26 20:11:23 +00:00
bool showTitle ;
2019-11-08 21:31:57 +00:00
///Set the custom background color of the toolbar.
2019-10-26 20:11:23 +00:00
String toolbarBackgroundColor ;
2019-11-08 21:31:57 +00:00
///Set to `true` to enable the url bar to hide as the user scrolls down on the page. The default value is `false`.
2019-10-26 20:11:23 +00:00
bool enableUrlBarHiding ;
2019-11-08 21:31:57 +00:00
///Set to `true` to enable Instant Apps. The default value is `false`.
2019-10-26 20:11:23 +00:00
bool instantAppsEnabled ;
AndroidChromeCustomTabsOptions ( { this . addShareButton = true , this . showTitle = true , this . toolbarBackgroundColor = " " , this . enableUrlBarHiding = false , this . instantAppsEnabled = false } ) ;
@ override
Map < String , dynamic > toMap ( ) {
return {
" addShareButton " : addShareButton ,
" showTitle " : showTitle ,
" toolbarBackgroundColor " : toolbarBackgroundColor ,
" enableUrlBarHiding " : enableUrlBarHiding ,
2019-11-04 00:39:23 +00:00
" instantAppsEnabled " : instantAppsEnabled
2019-10-26 20:11:23 +00:00
} ;
}
2019-11-04 00:39:23 +00:00
@ override
static AndroidChromeCustomTabsOptions fromMap ( Map < String , dynamic > map ) {
AndroidChromeCustomTabsOptions options = new AndroidChromeCustomTabsOptions ( ) ;
options . addShareButton = map [ " addShareButton " ] ;
options . showTitle = map [ " showTitle " ] ;
options . toolbarBackgroundColor = map [ " toolbarBackgroundColor " ] ;
options . enableUrlBarHiding = map [ " enableUrlBarHiding " ] ;
options . instantAppsEnabled = map [ " instantAppsEnabled " ] ;
return options ;
}
2019-10-26 20:11:23 +00:00
}
2019-11-08 21:31:57 +00:00
///This class represents all the iOS-only [ChromeSafariBrowser] options available.
2019-11-04 00:39:23 +00:00
class IosSafariOptions implements ChromeSafariBrowserOptions , IosOptions {
2019-11-08 21:31:57 +00:00
///Set to `true` if Reader mode should be entered automatically when it is available for the webpage. The default value is `false`.
2019-10-26 20:11:23 +00:00
bool entersReaderIfAvailable ;
2019-11-08 21:31:57 +00:00
///Set to `true` to enable bar collapsing. The default value is `false`.
2019-10-26 20:11:23 +00:00
bool barCollapsingEnabled ;
2019-11-08 21:31:57 +00:00
///Set the custom style for the dismiss button. The default value is [IosSafariOptionsDismissButtonStyle.DONE].
2019-11-09 22:35:18 +00:00
///
///**NOTE**: available on iOS 11.0+.
2019-11-04 00:39:23 +00:00
IosSafariOptionsDismissButtonStyle dismissButtonStyle ;
2019-11-08 21:31:57 +00:00
///Set the custom background color of the navigation bar and the toolbar.
2019-11-09 22:35:18 +00:00
///
///**NOTE**: available on iOS 10.0+.
2019-10-26 20:11:23 +00:00
String preferredBarTintColor ;
2019-11-08 21:31:57 +00:00
///Set the custom color of the control buttons on the navigation bar and the toolbar.
2019-11-09 22:35:18 +00:00
///
///**NOTE**: available on iOS 10.0+.
2019-10-26 20:11:23 +00:00
String preferredControlTintColor ;
2019-11-08 21:31:57 +00:00
///Set the custom modal presentation style when presenting the WebView. The default value is [IosWebViewOptionsPresentationStyle.FULL_SCREEN].
2019-11-04 00:39:23 +00:00
IosWebViewOptionsPresentationStyle presentationStyle ;
2019-11-08 21:31:57 +00:00
///Set to the custom transition style when presenting the WebView. The default value is [IosWebViewOptionsTransitionStyle.COVER_VERTICAL].
2019-11-04 00:39:23 +00:00
IosWebViewOptionsTransitionStyle transitionStyle ;
2019-10-26 20:11:23 +00:00
2019-11-04 00:39:23 +00:00
IosSafariOptions ( { this . entersReaderIfAvailable = false , this . barCollapsingEnabled = false , this . dismissButtonStyle = IosSafariOptionsDismissButtonStyle . DONE ,
this . preferredBarTintColor = " " , this . preferredControlTintColor = " " , this . presentationStyle = IosWebViewOptionsPresentationStyle . FULL_SCREEN ,
this . transitionStyle = IosWebViewOptionsTransitionStyle . COVER_VERTICAL } ) ;
2019-10-26 20:11:23 +00:00
@ override
Map < String , dynamic > toMap ( ) {
return {
" entersReaderIfAvailable " : entersReaderIfAvailable ,
" barCollapsingEnabled " : barCollapsingEnabled ,
2019-10-29 14:27:50 +00:00
" dismissButtonStyle " : dismissButtonStyle . toValue ( ) ,
2019-10-26 20:11:23 +00:00
" preferredBarTintColor " : preferredBarTintColor ,
" preferredControlTintColor " : preferredControlTintColor ,
2019-10-29 14:27:50 +00:00
" presentationStyle " : presentationStyle . toValue ( ) ,
2019-11-04 00:39:23 +00:00
" transitionStyle " : transitionStyle . toValue ( )
2019-10-26 20:11:23 +00:00
} ;
}
2019-11-04 00:39:23 +00:00
@ override
static IosSafariOptions fromMap ( Map < String , dynamic > map ) {
IosSafariOptions options = new IosSafariOptions ( ) ;
options . entersReaderIfAvailable = map [ " entersReaderIfAvailable " ] ;
options . barCollapsingEnabled = map [ " barCollapsingEnabled " ] ;
options . dismissButtonStyle = IosSafariOptionsDismissButtonStyle . fromValue ( map [ " dismissButtonStyle " ] ) ;
options . preferredBarTintColor = map [ " preferredBarTintColor " ] ;
options . preferredControlTintColor = map [ " preferredControlTintColor " ] ;
options . presentationStyle = IosWebViewOptionsPresentationStyle . fromValue ( map [ " presentationStyle " ] ) ;
options . transitionStyle = IosWebViewOptionsTransitionStyle . fromValue ( map [ " transitionStyle " ] ) ;
return options ;
}
2019-10-26 20:11:23 +00:00
}