All PrintJobSettings properties are optionals, All PullToRefreshSettings properties are optionals, All WebAuthenticationSessionSettings properties are optionals, Automatically infer useShouldOverrideUrlLoading, useOnLoadResource, useOnDownloadStart, useShouldInterceptAjaxRequest, useShouldInterceptFetchRequest, useShouldInterceptRequest, useOnRenderProcessGone, useOnNavigationResponse settings if their value is null and the corresponding event is implemented by the WebView (InAppWebView and HeadlessInAppWebView, not InAppBrowser) before it's native initialization
This commit is contained in:
parent
d39b1ef374
commit
3101b44c37
19
CHANGELOG.md
19
CHANGELOG.md
|
@ -1,3 +1,13 @@
|
|||
## 6.0.0-beta.15
|
||||
|
||||
- Automatically infer `useShouldOverrideUrlLoading`, `useOnLoadResource`, `useOnDownloadStart`, `useShouldInterceptAjaxRequest`, `useShouldInterceptFetchRequest`, `useShouldInterceptRequest`, `useOnRenderProcessGone`, `useOnNavigationResponse` settings if their value is `null` and the corresponding event is implemented by the WebView (`InAppWebView` and `HeadlessInAppWebView`, not `InAppBrowser`) before it's native initialization.
|
||||
|
||||
### BREAKING CHANGES
|
||||
|
||||
- All `PrintJobSettings` properties are optionals
|
||||
- All `PullToRefreshSettings` properties are optionals
|
||||
- All `WebAuthenticationSessionSettings` properties are optionals
|
||||
|
||||
## 6.0.0-beta.14
|
||||
|
||||
- Fixed User Script remove methods
|
||||
|
@ -135,6 +145,15 @@
|
|||
- Removed `URLProtectionSpace.iosIsProxy` property
|
||||
- `historyUrl` and `baseUrl` of `InAppWebViewInitialData` can be `null`
|
||||
|
||||
## 5.7.1+2
|
||||
|
||||
- Fixed Android `NullPointerException` on `InAppBrowserActivity.dispose`
|
||||
|
||||
## 5.7.1+1
|
||||
|
||||
- Fixed User Script remove methods
|
||||
- Fixed missing `break` statement on Android when parsing `ChromeCustomTabsOptions.displayMode` in Java code
|
||||
|
||||
## 5.7.1
|
||||
|
||||
- Exposed "shared" property of HttpServer bind method to support more use-cases. (thanks to [LugonjaAleksandar](https://github.com/LugonjaAleksandar))
|
||||
|
|
|
@ -56,7 +56,6 @@ void interceptAjaxRequest() {
|
|||
"""),
|
||||
initialSettings: InAppWebViewSettings(
|
||||
clearCache: true,
|
||||
useShouldInterceptAjaxRequest: true,
|
||||
),
|
||||
onWebViewCreated: (controller) {
|
||||
controllerCompleter.complete(controller);
|
||||
|
@ -146,7 +145,6 @@ void interceptAjaxRequest() {
|
|||
"""),
|
||||
initialSettings: InAppWebViewSettings(
|
||||
clearCache: true,
|
||||
useShouldInterceptAjaxRequest: true,
|
||||
),
|
||||
onWebViewCreated: (controller) {
|
||||
controllerCompleter.complete(controller);
|
||||
|
@ -236,7 +234,6 @@ void interceptAjaxRequest() {
|
|||
"""),
|
||||
initialSettings: InAppWebViewSettings(
|
||||
clearCache: true,
|
||||
useShouldInterceptAjaxRequest: true,
|
||||
),
|
||||
onWebViewCreated: (controller) {
|
||||
controllerCompleter.complete(controller);
|
||||
|
@ -324,7 +321,6 @@ void interceptAjaxRequest() {
|
|||
"""),
|
||||
initialSettings: InAppWebViewSettings(
|
||||
clearCache: true,
|
||||
useShouldInterceptAjaxRequest: true,
|
||||
),
|
||||
onWebViewCreated: (controller) {
|
||||
controllerCompleter.complete(controller);
|
||||
|
|
|
@ -65,7 +65,6 @@ void interceptFetchRequest() {
|
|||
"""),
|
||||
initialSettings: InAppWebViewSettings(
|
||||
clearCache: true,
|
||||
useShouldInterceptFetchRequest: true,
|
||||
),
|
||||
onWebViewCreated: (controller) {
|
||||
controllerCompleter.complete(controller);
|
||||
|
@ -148,7 +147,6 @@ void interceptFetchRequest() {
|
|||
"""),
|
||||
initialSettings: InAppWebViewSettings(
|
||||
clearCache: true,
|
||||
useShouldInterceptFetchRequest: true,
|
||||
),
|
||||
onWebViewCreated: (controller) {
|
||||
controllerCompleter.complete(controller);
|
||||
|
@ -231,7 +229,6 @@ void interceptFetchRequest() {
|
|||
"""),
|
||||
initialSettings: InAppWebViewSettings(
|
||||
clearCache: true,
|
||||
useShouldInterceptFetchRequest: true,
|
||||
),
|
||||
onWebViewCreated: (controller) {
|
||||
controllerCompleter.complete(controller);
|
||||
|
@ -310,7 +307,6 @@ void interceptFetchRequest() {
|
|||
"""),
|
||||
initialSettings: InAppWebViewSettings(
|
||||
clearCache: true,
|
||||
useShouldInterceptFetchRequest: true,
|
||||
),
|
||||
onWebViewCreated: (controller) {
|
||||
controllerCompleter.complete(controller);
|
||||
|
|
|
@ -46,7 +46,7 @@ void onDownloadStartRequest() {
|
|||
</html>
|
||||
"""),
|
||||
initialSettings:
|
||||
InAppWebViewSettings(clearCache: true, useOnDownloadStart: true),
|
||||
InAppWebViewSettings(clearCache: true),
|
||||
onWebViewCreated: (controller) {
|
||||
controllerCompleter.complete(controller);
|
||||
},
|
||||
|
|
|
@ -33,7 +33,7 @@ void onLoadResource() {
|
|||
initialFile:
|
||||
"test_assets/in_app_webview_on_load_resource_test.html",
|
||||
initialSettings:
|
||||
InAppWebViewSettings(clearCache: true, useOnLoadResource: true),
|
||||
InAppWebViewSettings(clearCache: true),
|
||||
onLoadStop: (controller, url) {
|
||||
pageLoaded.complete();
|
||||
},
|
||||
|
|
|
@ -30,7 +30,7 @@ void onNavigationResponse() {
|
|||
key: GlobalKey(),
|
||||
initialUrlRequest: URLRequest(url: TEST_URL_1),
|
||||
initialSettings:
|
||||
InAppWebViewSettings(useOnNavigationResponse: true),
|
||||
InAppWebViewSettings(),
|
||||
onWebViewCreated: (controller) {
|
||||
controllerCompleter.complete(controller);
|
||||
},
|
||||
|
@ -65,7 +65,7 @@ void onNavigationResponse() {
|
|||
key: GlobalKey(),
|
||||
initialUrlRequest: URLRequest(url: TEST_URL_1),
|
||||
initialSettings:
|
||||
InAppWebViewSettings(useOnNavigationResponse: true),
|
||||
InAppWebViewSettings(),
|
||||
onWebViewCreated: (controller) {
|
||||
controllerCompleter.complete(controller);
|
||||
},
|
||||
|
|
|
@ -46,7 +46,7 @@ void shouldInterceptRequest() {
|
|||
</html>
|
||||
"""),
|
||||
initialSettings:
|
||||
InAppWebViewSettings(useShouldInterceptRequest: true),
|
||||
InAppWebViewSettings(),
|
||||
onWebViewCreated: (controller) {
|
||||
controllerCompleter.complete(controller);
|
||||
},
|
||||
|
|
|
@ -39,7 +39,6 @@ void shouldOverrideUrlLoading() {
|
|||
},
|
||||
initialSettings: InAppWebViewSettings(
|
||||
javaScriptEnabled: true,
|
||||
useShouldOverrideUrlLoading: true,
|
||||
),
|
||||
shouldOverrideUrlLoading: (controller, navigationAction) async {
|
||||
return (navigationAction.request.url!.host
|
||||
|
@ -92,7 +91,6 @@ void shouldOverrideUrlLoading() {
|
|||
},
|
||||
initialSettings: InAppWebViewSettings(
|
||||
javaScriptEnabled: true,
|
||||
useShouldOverrideUrlLoading: true,
|
||||
),
|
||||
shouldOverrideUrlLoading: (controller, navigationAction) async {
|
||||
var isFirstLoad = navigationAction.request.url!.scheme == "data";
|
||||
|
@ -151,7 +149,6 @@ void shouldOverrideUrlLoading() {
|
|||
},
|
||||
initialSettings: InAppWebViewSettings(
|
||||
javaScriptEnabled: true,
|
||||
useShouldOverrideUrlLoading: true,
|
||||
),
|
||||
shouldOverrideUrlLoading: (controller, navigationAction) async {
|
||||
return (navigationAction.request.url!.host
|
||||
|
@ -203,7 +200,6 @@ void shouldOverrideUrlLoading() {
|
|||
},
|
||||
initialSettings: InAppWebViewSettings(
|
||||
javaScriptEnabled: true,
|
||||
useShouldOverrideUrlLoading: true,
|
||||
),
|
||||
shouldOverrideUrlLoading: (controller, navigationAction) async {
|
||||
var action = NavigationActionPolicy.CANCEL;
|
||||
|
|
|
@ -17,7 +17,6 @@ class _InAppWebViewExampleScreenState extends State<InAppWebViewExampleScreen> {
|
|||
|
||||
InAppWebViewController? webViewController;
|
||||
InAppWebViewSettings settings = InAppWebViewSettings(
|
||||
useShouldOverrideUrlLoading: true,
|
||||
mediaPlaybackRequiresUserGesture: false,
|
||||
allowsInlineMediaPlayback: true,
|
||||
iframeAllow: "camera; microphone",
|
||||
|
|
|
@ -214,7 +214,12 @@ class HeadlessInAppWebView implements WebView, Disposable {
|
|||
}
|
||||
_started = true;
|
||||
|
||||
Map<String, dynamic> initialSettings = this.initialSettings?.toMap() ??
|
||||
final initialSettings = this.initialSettings;
|
||||
if (initialSettings != null) {
|
||||
_inferInitialSettings(initialSettings);
|
||||
}
|
||||
|
||||
Map<String, dynamic> settingsMap = initialSettings?.toMap() ??
|
||||
// ignore: deprecated_member_use_from_same_package
|
||||
this.initialOptions?.toMap() ??
|
||||
{};
|
||||
|
@ -233,7 +238,7 @@ class HeadlessInAppWebView implements WebView, Disposable {
|
|||
'initialUrlRequest': this.initialUrlRequest?.toMap(),
|
||||
'initialFile': this.initialFile,
|
||||
'initialData': this.initialData?.toMap(),
|
||||
'initialSettings': initialSettings,
|
||||
'initialSettings': settingsMap,
|
||||
'contextMenu': this.contextMenu?.toMap() ?? {},
|
||||
'windowId': this.windowId,
|
||||
'implementation': this.implementation.toNativeValue(),
|
||||
|
@ -246,6 +251,40 @@ class HeadlessInAppWebView implements WebView, Disposable {
|
|||
_running = true;
|
||||
}
|
||||
|
||||
void _inferInitialSettings(InAppWebViewSettings settings) {
|
||||
if (this.shouldOverrideUrlLoading != null &&
|
||||
settings.useShouldOverrideUrlLoading == null) {
|
||||
settings.useShouldOverrideUrlLoading = true;
|
||||
}
|
||||
if (this.onLoadResource != null && settings.useOnLoadResource == null) {
|
||||
settings.useOnLoadResource = true;
|
||||
}
|
||||
if (this.onDownloadStartRequest != null &&
|
||||
settings.useOnDownloadStart == null) {
|
||||
settings.useOnDownloadStart = true;
|
||||
}
|
||||
if (this.shouldInterceptAjaxRequest != null &&
|
||||
settings.useShouldInterceptAjaxRequest == null) {
|
||||
settings.useShouldInterceptAjaxRequest = true;
|
||||
}
|
||||
if (this.shouldInterceptFetchRequest != null &&
|
||||
settings.useShouldInterceptFetchRequest == null) {
|
||||
settings.useShouldInterceptFetchRequest = true;
|
||||
}
|
||||
if (this.shouldInterceptRequest != null &&
|
||||
settings.useShouldInterceptRequest == null) {
|
||||
settings.useShouldInterceptRequest = true;
|
||||
}
|
||||
if (this.onRenderProcessGone != null &&
|
||||
settings.useOnRenderProcessGone == null) {
|
||||
settings.useOnRenderProcessGone = true;
|
||||
}
|
||||
if (this.onNavigationResponse != null &&
|
||||
settings.useOnNavigationResponse == null) {
|
||||
settings.useOnNavigationResponse = true;
|
||||
}
|
||||
}
|
||||
|
||||
///Disposes the headless WebView.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
|
|
|
@ -624,7 +624,12 @@ class _InAppWebViewState extends State<InAppWebView> {
|
|||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
Map<String, dynamic> initialSettings = widget.initialSettings?.toMap() ??
|
||||
final initialSettings = widget.initialSettings;
|
||||
if (initialSettings != null) {
|
||||
_inferInitialSettings(initialSettings);
|
||||
}
|
||||
|
||||
Map<String, dynamic> settingsMap = initialSettings?.toMap() ??
|
||||
// ignore: deprecated_member_use_from_same_package
|
||||
widget.initialOptions?.toMap() ??
|
||||
{};
|
||||
|
@ -692,7 +697,7 @@ class _InAppWebViewState extends State<InAppWebView> {
|
|||
'initialUrlRequest': widget.initialUrlRequest?.toMap(),
|
||||
'initialFile': widget.initialFile,
|
||||
'initialData': widget.initialData?.toMap(),
|
||||
'initialSettings': initialSettings,
|
||||
'initialSettings': settingsMap,
|
||||
'contextMenu': widget.contextMenu?.toMap() ?? {},
|
||||
'windowId': widget.windowId,
|
||||
'headlessWebViewId': widget.headlessWebView?.isRunning() ?? false
|
||||
|
@ -722,7 +727,7 @@ class _InAppWebViewState extends State<InAppWebView> {
|
|||
'initialUrlRequest': widget.initialUrlRequest?.toMap(),
|
||||
'initialFile': widget.initialFile,
|
||||
'initialData': widget.initialData?.toMap(),
|
||||
'initialSettings': initialSettings,
|
||||
'initialSettings': settingsMap,
|
||||
'contextMenu': widget.contextMenu?.toMap() ?? {},
|
||||
'windowId': widget.windowId,
|
||||
'headlessWebViewId': widget.headlessWebView?.isRunning() ?? false
|
||||
|
@ -801,4 +806,38 @@ class _InAppWebViewState extends State<InAppWebView> {
|
|||
widget.onWebViewCreated!(_controller!);
|
||||
}
|
||||
}
|
||||
|
||||
void _inferInitialSettings(InAppWebViewSettings settings) {
|
||||
if (widget.shouldOverrideUrlLoading != null &&
|
||||
settings.useShouldOverrideUrlLoading == null) {
|
||||
settings.useShouldOverrideUrlLoading = true;
|
||||
}
|
||||
if (widget.onLoadResource != null && settings.useOnLoadResource == null) {
|
||||
settings.useOnLoadResource = true;
|
||||
}
|
||||
if (widget.onDownloadStartRequest != null &&
|
||||
settings.useOnDownloadStart == null) {
|
||||
settings.useOnDownloadStart = true;
|
||||
}
|
||||
if (widget.shouldInterceptAjaxRequest != null &&
|
||||
settings.useShouldInterceptAjaxRequest == null) {
|
||||
settings.useShouldInterceptAjaxRequest = true;
|
||||
}
|
||||
if (widget.shouldInterceptFetchRequest != null &&
|
||||
settings.useShouldInterceptFetchRequest == null) {
|
||||
settings.useShouldInterceptFetchRequest = true;
|
||||
}
|
||||
if (widget.shouldInterceptRequest != null &&
|
||||
settings.useShouldInterceptRequest == null) {
|
||||
settings.useShouldInterceptRequest = true;
|
||||
}
|
||||
if (widget.onRenderProcessGone != null &&
|
||||
settings.useOnRenderProcessGone == null) {
|
||||
settings.useOnRenderProcessGone = true;
|
||||
}
|
||||
if (widget.onNavigationResponse != null &&
|
||||
settings.useOnNavigationResponse == null) {
|
||||
settings.useOnNavigationResponse = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -32,6 +32,7 @@ import 'webview.dart';
|
|||
import '../android/webview_feature.dart';
|
||||
import '../in_app_webview/in_app_webview_controller.dart';
|
||||
import '../context_menu.dart';
|
||||
import '../in_app_browser/in_app_browser.dart';
|
||||
|
||||
part 'in_app_webview_settings.g.dart';
|
||||
|
||||
|
@ -51,7 +52,11 @@ List<ContentBlocker> _deserializeContentBlockers(
|
|||
///This class represents all the WebView settings available.
|
||||
@ExchangeableObject(copyMethod: true)
|
||||
class InAppWebViewSettings_ {
|
||||
///Set to `true` to be able to listen at the [WebView.shouldOverrideUrlLoading] event. The default value is `false`.
|
||||
///Set to `true` to be able to listen at the [WebView.shouldOverrideUrlLoading] event.
|
||||
///
|
||||
///If the [WebView.shouldOverrideUrlLoading] event is implemented and this value is `null`,
|
||||
///it will be automatically inferred as `true`, otherwise, the default value is `false`.
|
||||
///This logic will not be applied for [InAppBrowser], where you must set the value manually.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- Android native WebView
|
||||
|
@ -59,7 +64,11 @@ class InAppWebViewSettings_ {
|
|||
///- MacOS
|
||||
bool? useShouldOverrideUrlLoading;
|
||||
|
||||
///Set to `true` to be able to listen at the [WebView.onLoadResource] event. The default value is `false`.
|
||||
///Set to `true` to be able to listen at the [WebView.onLoadResource] event.
|
||||
///
|
||||
///If the [WebView.onLoadResource] event is implemented and this value is `null`,
|
||||
///it will be automatically inferred as `true`, otherwise, the default value is `false`.
|
||||
///This logic will not be applied for [InAppBrowser], where you must set the value manually.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- Android native WebView
|
||||
|
@ -67,7 +76,11 @@ class InAppWebViewSettings_ {
|
|||
///- MacOS
|
||||
bool? useOnLoadResource;
|
||||
|
||||
///Set to `true` to be able to listen at the [WebView.onDownloadStartRequest] event. The default value is `false`.
|
||||
///Set to `true` to be able to listen at the [WebView.onDownloadStartRequest] event.
|
||||
///
|
||||
///If the [WebView.onDownloadStartRequest] event is implemented and this value is `null`,
|
||||
///it will be automatically inferred as `true`, otherwise, the default value is `false`.
|
||||
///This logic will not be applied for [InAppBrowser], where you must set the value manually.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- Android native WebView
|
||||
|
@ -202,7 +215,11 @@ class InAppWebViewSettings_ {
|
|||
///- MacOS
|
||||
UserPreferredContentMode_? preferredContentMode;
|
||||
|
||||
///Set to `true` to be able to listen at the [WebView.shouldInterceptAjaxRequest] event. The default value is `false`.
|
||||
///Set to `true` to be able to listen at the [WebView.shouldInterceptAjaxRequest] event.
|
||||
///
|
||||
///If the [WebView.shouldInterceptAjaxRequest] event is implemented and this value is `null`,
|
||||
///it will be automatically inferred as `true`, otherwise, the default value is `false`.
|
||||
///This logic will not be applied for [InAppBrowser], where you must set the value manually.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- Android native WebView
|
||||
|
@ -210,7 +227,11 @@ class InAppWebViewSettings_ {
|
|||
///- MacOS
|
||||
bool? useShouldInterceptAjaxRequest;
|
||||
|
||||
///Set to `true` to be able to listen at the [WebView.shouldInterceptFetchRequest] event. The default value is `false`.
|
||||
///Set to `true` to be able to listen at the [WebView.shouldInterceptFetchRequest] event.
|
||||
///
|
||||
///If the [WebView.shouldInterceptFetchRequest] event is implemented and this value is `null`,
|
||||
///it will be automatically inferred as `true`, otherwise, the default value is `false`.
|
||||
///This logic will not be applied for [InAppBrowser], where you must set the value manually.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- Android native WebView
|
||||
|
@ -630,13 +651,21 @@ class InAppWebViewSettings_ {
|
|||
///- Android native WebView
|
||||
bool? useHybridComposition;
|
||||
|
||||
///Set to `true` to be able to listen at the [WebView.shouldInterceptRequest] event. The default value is `false`.
|
||||
///Set to `true` to be able to listen at the [WebView.shouldInterceptRequest] event.
|
||||
///
|
||||
///If the [WebView.shouldInterceptRequest] event is implemented and this value is `null`,
|
||||
///it will be automatically inferred as `true`, otherwise, the default value is `false`.
|
||||
///This logic will not be applied for [InAppBrowser], where you must set the value manually.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- Android native WebView
|
||||
bool? useShouldInterceptRequest;
|
||||
|
||||
///Set to `true` to be able to listen at the [WebView.onRenderProcessGone] event. The default value is `false`.
|
||||
///Set to `true` to be able to listen at the [WebView.onRenderProcessGone] event.
|
||||
///
|
||||
///If the [WebView.onRenderProcessGone] event is implemented and this value is `null`,
|
||||
///it will be automatically inferred as `true`, otherwise, the default value is `false`.
|
||||
///This logic will not be applied for [InAppBrowser], where you must set the value manually.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- Android native WebView
|
||||
|
@ -1034,7 +1063,11 @@ class InAppWebViewSettings_ {
|
|||
///- MacOS
|
||||
bool? limitsNavigationsToAppBoundDomains;
|
||||
|
||||
///Set to `true` to be able to listen to the [WebView.onNavigationResponse] event. The default value is `false`.
|
||||
///Set to `true` to be able to listen to the [WebView.onNavigationResponse] event.
|
||||
///
|
||||
///If the [WebView.onNavigationResponse] event is implemented and this value is `null`,
|
||||
///it will be automatically inferred as `true`, otherwise, the default value is `false`.
|
||||
///This logic will not be applied for [InAppBrowser], where you must set the value manually.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- iOS
|
||||
|
@ -1274,9 +1307,9 @@ class InAppWebViewSettings_ {
|
|||
|
||||
@ExchangeableObjectConstructor()
|
||||
InAppWebViewSettings_({
|
||||
this.useShouldOverrideUrlLoading = false,
|
||||
this.useOnLoadResource = false,
|
||||
this.useOnDownloadStart = false,
|
||||
this.useShouldOverrideUrlLoading,
|
||||
this.useOnLoadResource,
|
||||
this.useOnDownloadStart,
|
||||
this.clearCache = false,
|
||||
this.userAgent = "",
|
||||
this.applicationNameForUserAgent = "",
|
||||
|
@ -1289,8 +1322,8 @@ class InAppWebViewSettings_ {
|
|||
this.resourceCustomSchemes = const [],
|
||||
this.contentBlockers = const [],
|
||||
this.preferredContentMode = UserPreferredContentMode_.RECOMMENDED,
|
||||
this.useShouldInterceptAjaxRequest = false,
|
||||
this.useShouldInterceptFetchRequest = false,
|
||||
this.useShouldInterceptAjaxRequest,
|
||||
this.useShouldInterceptFetchRequest,
|
||||
this.incognito = false,
|
||||
this.cacheEnabled = true,
|
||||
this.transparentBackground = false,
|
||||
|
@ -1342,8 +1375,8 @@ class InAppWebViewSettings_ {
|
|||
this.supportMultipleWindows = false,
|
||||
this.regexToCancelSubFramesLoading,
|
||||
this.useHybridComposition = true,
|
||||
this.useShouldInterceptRequest = false,
|
||||
this.useOnRenderProcessGone = false,
|
||||
this.useShouldInterceptRequest,
|
||||
this.useOnRenderProcessGone,
|
||||
this.overScrollMode = OverScrollMode_.IF_CONTENT_SCROLLS,
|
||||
this.networkAvailable,
|
||||
this.scrollBarStyle = ScrollBarStyle_.SCROLLBARS_INSIDE_OVERLAY,
|
||||
|
@ -1390,7 +1423,7 @@ class InAppWebViewSettings_ {
|
|||
this.mediaType,
|
||||
this.pageZoom = 1.0,
|
||||
this.limitsNavigationsToAppBoundDomains = false,
|
||||
this.useOnNavigationResponse = false,
|
||||
this.useOnNavigationResponse,
|
||||
this.applePayAPIEnabled = false,
|
||||
this.allowingReadAccessTo,
|
||||
this.disableLongPressContextMenuOnLinks = false,
|
||||
|
|
|
@ -8,7 +8,11 @@ part of 'in_app_webview_settings.dart';
|
|||
|
||||
///This class represents all the WebView settings available.
|
||||
class InAppWebViewSettings {
|
||||
///Set to `true` to be able to listen at the [WebView.shouldOverrideUrlLoading] event. The default value is `false`.
|
||||
///Set to `true` to be able to listen at the [WebView.shouldOverrideUrlLoading] event.
|
||||
///
|
||||
///If the [WebView.shouldOverrideUrlLoading] event is implemented and this value is `null`,
|
||||
///it will be automatically inferred as `true`, otherwise, the default value is `false`.
|
||||
///This logic will not be applied for [InAppBrowser], where you must set the value manually.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- Android native WebView
|
||||
|
@ -16,7 +20,11 @@ class InAppWebViewSettings {
|
|||
///- MacOS
|
||||
bool? useShouldOverrideUrlLoading;
|
||||
|
||||
///Set to `true` to be able to listen at the [WebView.onLoadResource] event. The default value is `false`.
|
||||
///Set to `true` to be able to listen at the [WebView.onLoadResource] event.
|
||||
///
|
||||
///If the [WebView.onLoadResource] event is implemented and this value is `null`,
|
||||
///it will be automatically inferred as `true`, otherwise, the default value is `false`.
|
||||
///This logic will not be applied for [InAppBrowser], where you must set the value manually.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- Android native WebView
|
||||
|
@ -24,7 +32,11 @@ class InAppWebViewSettings {
|
|||
///- MacOS
|
||||
bool? useOnLoadResource;
|
||||
|
||||
///Set to `true` to be able to listen at the [WebView.onDownloadStartRequest] event. The default value is `false`.
|
||||
///Set to `true` to be able to listen at the [WebView.onDownloadStartRequest] event.
|
||||
///
|
||||
///If the [WebView.onDownloadStartRequest] event is implemented and this value is `null`,
|
||||
///it will be automatically inferred as `true`, otherwise, the default value is `false`.
|
||||
///This logic will not be applied for [InAppBrowser], where you must set the value manually.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- Android native WebView
|
||||
|
@ -158,7 +170,11 @@ class InAppWebViewSettings {
|
|||
///- MacOS
|
||||
UserPreferredContentMode? preferredContentMode;
|
||||
|
||||
///Set to `true` to be able to listen at the [WebView.shouldInterceptAjaxRequest] event. The default value is `false`.
|
||||
///Set to `true` to be able to listen at the [WebView.shouldInterceptAjaxRequest] event.
|
||||
///
|
||||
///If the [WebView.shouldInterceptAjaxRequest] event is implemented and this value is `null`,
|
||||
///it will be automatically inferred as `true`, otherwise, the default value is `false`.
|
||||
///This logic will not be applied for [InAppBrowser], where you must set the value manually.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- Android native WebView
|
||||
|
@ -166,7 +182,11 @@ class InAppWebViewSettings {
|
|||
///- MacOS
|
||||
bool? useShouldInterceptAjaxRequest;
|
||||
|
||||
///Set to `true` to be able to listen at the [WebView.shouldInterceptFetchRequest] event. The default value is `false`.
|
||||
///Set to `true` to be able to listen at the [WebView.shouldInterceptFetchRequest] event.
|
||||
///
|
||||
///If the [WebView.shouldInterceptFetchRequest] event is implemented and this value is `null`,
|
||||
///it will be automatically inferred as `true`, otherwise, the default value is `false`.
|
||||
///This logic will not be applied for [InAppBrowser], where you must set the value manually.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- Android native WebView
|
||||
|
@ -586,13 +606,21 @@ class InAppWebViewSettings {
|
|||
///- Android native WebView
|
||||
bool? useHybridComposition;
|
||||
|
||||
///Set to `true` to be able to listen at the [WebView.shouldInterceptRequest] event. The default value is `false`.
|
||||
///Set to `true` to be able to listen at the [WebView.shouldInterceptRequest] event.
|
||||
///
|
||||
///If the [WebView.shouldInterceptRequest] event is implemented and this value is `null`,
|
||||
///it will be automatically inferred as `true`, otherwise, the default value is `false`.
|
||||
///This logic will not be applied for [InAppBrowser], where you must set the value manually.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- Android native WebView
|
||||
bool? useShouldInterceptRequest;
|
||||
|
||||
///Set to `true` to be able to listen at the [WebView.onRenderProcessGone] event. The default value is `false`.
|
||||
///Set to `true` to be able to listen at the [WebView.onRenderProcessGone] event.
|
||||
///
|
||||
///If the [WebView.onRenderProcessGone] event is implemented and this value is `null`,
|
||||
///it will be automatically inferred as `true`, otherwise, the default value is `false`.
|
||||
///This logic will not be applied for [InAppBrowser], where you must set the value manually.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- Android native WebView
|
||||
|
@ -990,7 +1018,11 @@ class InAppWebViewSettings {
|
|||
///- MacOS
|
||||
bool? limitsNavigationsToAppBoundDomains;
|
||||
|
||||
///Set to `true` to be able to listen to the [WebView.onNavigationResponse] event. The default value is `false`.
|
||||
///Set to `true` to be able to listen to the [WebView.onNavigationResponse] event.
|
||||
///
|
||||
///If the [WebView.onNavigationResponse] event is implemented and this value is `null`,
|
||||
///it will be automatically inferred as `true`, otherwise, the default value is `false`.
|
||||
///This logic will not be applied for [InAppBrowser], where you must set the value manually.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- iOS
|
||||
|
@ -1228,9 +1260,9 @@ class InAppWebViewSettings {
|
|||
///- Web
|
||||
String? iframeCsp;
|
||||
InAppWebViewSettings(
|
||||
{this.useShouldOverrideUrlLoading = false,
|
||||
this.useOnLoadResource = false,
|
||||
this.useOnDownloadStart = false,
|
||||
{this.useShouldOverrideUrlLoading,
|
||||
this.useOnLoadResource,
|
||||
this.useOnDownloadStart,
|
||||
this.clearCache = false,
|
||||
this.userAgent = "",
|
||||
this.applicationNameForUserAgent = "",
|
||||
|
@ -1243,8 +1275,8 @@ class InAppWebViewSettings {
|
|||
this.resourceCustomSchemes = const [],
|
||||
this.contentBlockers = const [],
|
||||
this.preferredContentMode = UserPreferredContentMode.RECOMMENDED,
|
||||
this.useShouldInterceptAjaxRequest = false,
|
||||
this.useShouldInterceptFetchRequest = false,
|
||||
this.useShouldInterceptAjaxRequest,
|
||||
this.useShouldInterceptFetchRequest,
|
||||
this.incognito = false,
|
||||
this.cacheEnabled = true,
|
||||
this.transparentBackground = false,
|
||||
|
@ -1296,8 +1328,8 @@ class InAppWebViewSettings {
|
|||
this.supportMultipleWindows = false,
|
||||
this.regexToCancelSubFramesLoading,
|
||||
this.useHybridComposition = true,
|
||||
this.useShouldInterceptRequest = false,
|
||||
this.useOnRenderProcessGone = false,
|
||||
this.useShouldInterceptRequest,
|
||||
this.useOnRenderProcessGone,
|
||||
this.overScrollMode = OverScrollMode.IF_CONTENT_SCROLLS,
|
||||
this.networkAvailable,
|
||||
this.scrollBarStyle = ScrollBarStyle.SCROLLBARS_INSIDE_OVERLAY,
|
||||
|
@ -1344,7 +1376,7 @@ class InAppWebViewSettings {
|
|||
this.mediaType,
|
||||
this.pageZoom = 1.0,
|
||||
this.limitsNavigationsToAppBoundDomains = false,
|
||||
this.useOnNavigationResponse = false,
|
||||
this.useOnNavigationResponse,
|
||||
this.applePayAPIEnabled = false,
|
||||
this.allowingReadAccessTo,
|
||||
this.disableLongPressContextMenuOnLinks = false,
|
||||
|
@ -1393,7 +1425,12 @@ class InAppWebViewSettings {
|
|||
return null;
|
||||
}
|
||||
final instance = InAppWebViewSettings(
|
||||
useShouldOverrideUrlLoading: map['useShouldOverrideUrlLoading'],
|
||||
useOnLoadResource: map['useOnLoadResource'],
|
||||
useOnDownloadStart: map['useOnDownloadStart'],
|
||||
minimumFontSize: map['minimumFontSize'],
|
||||
useShouldInterceptAjaxRequest: map['useShouldInterceptAjaxRequest'],
|
||||
useShouldInterceptFetchRequest: map['useShouldInterceptFetchRequest'],
|
||||
webViewAssetLoader: WebViewAssetLoader.fromMap(
|
||||
map['webViewAssetLoader']?.cast<String, dynamic>()),
|
||||
mixedContentMode:
|
||||
|
@ -1403,6 +1440,8 @@ class InAppWebViewSettings {
|
|||
map['disabledActionModeMenuItems']),
|
||||
layoutAlgorithm: LayoutAlgorithm.fromNativeValue(map['layoutAlgorithm']),
|
||||
regexToCancelSubFramesLoading: map['regexToCancelSubFramesLoading'],
|
||||
useShouldInterceptRequest: map['useShouldInterceptRequest'],
|
||||
useOnRenderProcessGone: map['useOnRenderProcessGone'],
|
||||
networkAvailable: map['networkAvailable'],
|
||||
scrollBarDefaultDelayBeforeFade: map['scrollBarDefaultDelayBeforeFade'],
|
||||
scrollBarFadeDuration: map['scrollBarFadeDuration'],
|
||||
|
@ -1430,6 +1469,7 @@ class InAppWebViewSettings {
|
|||
map['requestedWithHeaderMode']),
|
||||
defaultVideoPoster: map['defaultVideoPoster'],
|
||||
mediaType: map['mediaType'],
|
||||
useOnNavigationResponse: map['useOnNavigationResponse'],
|
||||
allowingReadAccessTo: map['allowingReadAccessTo'] != null
|
||||
? WebUri(map['allowingReadAccessTo'])
|
||||
: null,
|
||||
|
@ -1451,9 +1491,6 @@ class InAppWebViewSettings {
|
|||
iframeName: map['iframeName'],
|
||||
iframeCsp: map['iframeCsp'],
|
||||
);
|
||||
instance.useShouldOverrideUrlLoading = map['useShouldOverrideUrlLoading'];
|
||||
instance.useOnLoadResource = map['useOnLoadResource'];
|
||||
instance.useOnDownloadStart = map['useOnDownloadStart'];
|
||||
instance.clearCache = map['clearCache'];
|
||||
instance.userAgent = map['userAgent'];
|
||||
instance.applicationNameForUserAgent = map['applicationNameForUserAgent'];
|
||||
|
@ -1470,10 +1507,6 @@ class InAppWebViewSettings {
|
|||
_deserializeContentBlockers(map['contentBlockers']);
|
||||
instance.preferredContentMode =
|
||||
UserPreferredContentMode.fromNativeValue(map['preferredContentMode']);
|
||||
instance.useShouldInterceptAjaxRequest =
|
||||
map['useShouldInterceptAjaxRequest'];
|
||||
instance.useShouldInterceptFetchRequest =
|
||||
map['useShouldInterceptFetchRequest'];
|
||||
instance.incognito = map['incognito'];
|
||||
instance.cacheEnabled = map['cacheEnabled'];
|
||||
instance.transparentBackground = map['transparentBackground'];
|
||||
|
@ -1522,8 +1555,6 @@ class InAppWebViewSettings {
|
|||
instance.hardwareAcceleration = map['hardwareAcceleration'];
|
||||
instance.supportMultipleWindows = map['supportMultipleWindows'];
|
||||
instance.useHybridComposition = map['useHybridComposition'];
|
||||
instance.useShouldInterceptRequest = map['useShouldInterceptRequest'];
|
||||
instance.useOnRenderProcessGone = map['useOnRenderProcessGone'];
|
||||
instance.overScrollMode =
|
||||
OverScrollMode.fromNativeValue(map['overScrollMode']);
|
||||
instance.scrollBarStyle =
|
||||
|
@ -1577,7 +1608,6 @@ class InAppWebViewSettings {
|
|||
instance.pageZoom = map['pageZoom'];
|
||||
instance.limitsNavigationsToAppBoundDomains =
|
||||
map['limitsNavigationsToAppBoundDomains'];
|
||||
instance.useOnNavigationResponse = map['useOnNavigationResponse'];
|
||||
instance.applePayAPIEnabled = map['applePayAPIEnabled'];
|
||||
instance.disableLongPressContextMenuOnLinks =
|
||||
map['disableLongPressContextMenuOnLinks'];
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
export 'print_job_controller.dart';
|
||||
export 'print_job_settings.dart';
|
||||
export 'print_job_settings.dart' show PrintJobSettings;
|
||||
|
|
|
@ -1,12 +1,26 @@
|
|||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter_inappwebview_internal_annotations/flutter_inappwebview_internal_annotations.dart';
|
||||
|
||||
import '../types/main.dart';
|
||||
import '../types/print_job_color_mode.dart';
|
||||
import '../types/print_job_disposition.dart';
|
||||
import '../types/print_job_duplex_mode.dart';
|
||||
import '../types/print_job_media_size.dart';
|
||||
import '../types/print_job_orientation.dart';
|
||||
import '../types/print_job_output_type.dart';
|
||||
import '../types/print_job_page_order.dart';
|
||||
import '../types/print_job_pagination_mode.dart';
|
||||
import '../types/print_job_rendering_quality.dart';
|
||||
import '../types/print_job_resolution.dart';
|
||||
import '../util.dart';
|
||||
import '../web_uri.dart';
|
||||
import 'print_job_controller.dart';
|
||||
|
||||
part 'print_job_settings.g.dart';
|
||||
|
||||
///Class that represents the settings of a [PrintJobController].
|
||||
class PrintJobSettings {
|
||||
@ExchangeableObject(copyMethod: true)
|
||||
class PrintJobSettings_ {
|
||||
///Set this to `true` to handle the [PrintJobController].
|
||||
///Otherwise, it will be handled and disposed automatically by the system.
|
||||
///The default value is `false`.
|
||||
|
@ -15,7 +29,7 @@ class PrintJobSettings {
|
|||
///- Android native WebView
|
||||
///- iOS
|
||||
///- MacOS
|
||||
bool handledByClient;
|
||||
bool? handledByClient;
|
||||
|
||||
///The name of the print job.
|
||||
///An application should set this property to a name appropriate to the content being printed.
|
||||
|
@ -31,7 +45,7 @@ class PrintJobSettings {
|
|||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- iOS
|
||||
bool animated;
|
||||
bool? animated;
|
||||
|
||||
///The orientation of the printed content, portrait or landscape.
|
||||
///
|
||||
|
@ -39,7 +53,7 @@ class PrintJobSettings {
|
|||
///- Android native WebView
|
||||
///- iOS
|
||||
///- MacOS
|
||||
PrintJobOrientation? orientation;
|
||||
PrintJobOrientation_? orientation;
|
||||
|
||||
///The number of pages to render.
|
||||
///
|
||||
|
@ -54,7 +68,7 @@ class PrintJobSettings {
|
|||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- iOS
|
||||
PrintJobRenderingQuality? forceRenderingQuality;
|
||||
PrintJobRenderingQuality_? forceRenderingQuality;
|
||||
|
||||
///The margins for each printed page.
|
||||
///Margins define the white space around the content where the left margin defines
|
||||
|
@ -69,14 +83,14 @@ class PrintJobSettings {
|
|||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- Android native WebView
|
||||
PrintJobMediaSize? mediaSize;
|
||||
PrintJobMediaSize_? mediaSize;
|
||||
|
||||
///The color mode.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- Android native WebView
|
||||
///- MacOS
|
||||
PrintJobColorMode? colorMode;
|
||||
PrintJobColorMode_? colorMode;
|
||||
|
||||
///The duplex mode to use for the print job.
|
||||
///
|
||||
|
@ -85,19 +99,19 @@ class PrintJobSettings {
|
|||
///**Supported Platforms/Implementations**:
|
||||
///- Android native WebView
|
||||
///- iOS
|
||||
PrintJobDuplexMode? duplexMode;
|
||||
PrintJobDuplexMode_? duplexMode;
|
||||
|
||||
///The kind of printable content.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- iOS
|
||||
PrintJobOutputType? outputType;
|
||||
PrintJobOutputType_? outputType;
|
||||
|
||||
///The supported resolution in DPI (dots per inch).
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- Android native WebView
|
||||
PrintJobResolution? resolution;
|
||||
PrintJobResolution_? resolution;
|
||||
|
||||
///A Boolean value that determines whether the printing options include the number of copies.
|
||||
///The default value is `true`.
|
||||
|
@ -105,7 +119,7 @@ class PrintJobSettings {
|
|||
///**Supported Platforms/Implementations**:
|
||||
///- iOS
|
||||
///- MacOS
|
||||
bool showsNumberOfCopies;
|
||||
bool? showsNumberOfCopies;
|
||||
|
||||
///A Boolean value that determines whether the paper selection menu displays.
|
||||
///The default value of this property is `false`.
|
||||
|
@ -114,7 +128,7 @@ class PrintJobSettings {
|
|||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- iOS
|
||||
bool showsPaperSelectionForLoadedPapers;
|
||||
bool? showsPaperSelectionForLoadedPapers;
|
||||
|
||||
///A Boolean value that determines whether the printing options include the paper orientation control when available.
|
||||
///The default value is `true`.
|
||||
|
@ -124,49 +138,49 @@ class PrintJobSettings {
|
|||
///**Supported Platforms/Implementations**:
|
||||
///- iOS
|
||||
///- MacOS
|
||||
bool showsPaperOrientation;
|
||||
bool? showsPaperOrientation;
|
||||
|
||||
///A Boolean value that determines whether the print panel includes a control for manipulating the paper size of the printer.
|
||||
///The default value is `true`.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- MacOS
|
||||
bool showsPaperSize;
|
||||
bool? showsPaperSize;
|
||||
|
||||
///A Boolean value that determines whether the Print panel includes a control for scaling the printed output.
|
||||
///The default value is `true`.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- MacOS
|
||||
bool showsScaling;
|
||||
bool? showsScaling;
|
||||
|
||||
///A Boolean value that determines whether the Print panel includes a set of fields for manipulating the range of pages being printed.
|
||||
///The default value is `true`.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- MacOS
|
||||
bool showsPageRange;
|
||||
bool? showsPageRange;
|
||||
|
||||
///A Boolean value that determines whether the Print panel includes a separate accessory view for manipulating the paper size, orientation, and scaling attributes.
|
||||
///The default value is `true`.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- MacOS
|
||||
bool showsPageSetupAccessory;
|
||||
bool? showsPageSetupAccessory;
|
||||
|
||||
///A Boolean value that determines whether the Print panel displays a built-in preview of the document contents.
|
||||
///The default value is `true`.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- MacOS
|
||||
bool showsPreview;
|
||||
bool? showsPreview;
|
||||
|
||||
///A Boolean value that determines whether the Print panel includes an additional selection option for paper range.
|
||||
///The default value is `true`.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- MacOS
|
||||
bool showsPrintSelection;
|
||||
bool? showsPrintSelection;
|
||||
|
||||
///A Boolean value that determines whether the print operation displays a print panel.
|
||||
///The default value is `true`.
|
||||
|
@ -177,7 +191,7 @@ class PrintJobSettings {
|
|||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- MacOS
|
||||
bool showsPrintPanel;
|
||||
bool? showsPrintPanel;
|
||||
|
||||
///A Boolean value that determines whether the print operation displays a progress panel.
|
||||
///The default value is `true`.
|
||||
|
@ -188,7 +202,7 @@ class PrintJobSettings {
|
|||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- MacOS
|
||||
bool showsProgressPanel;
|
||||
bool? showsProgressPanel;
|
||||
|
||||
///The height of the page footer.
|
||||
///
|
||||
|
@ -239,7 +253,7 @@ class PrintJobSettings {
|
|||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- MacOS
|
||||
PrintJobDisposition? jobDisposition;
|
||||
PrintJobDisposition_? jobDisposition;
|
||||
|
||||
///An URL containing the location to which the job file will be saved when the [jobDisposition] is [PrintJobDisposition.SAVE].
|
||||
///
|
||||
|
@ -257,47 +271,47 @@ class PrintJobSettings {
|
|||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- MacOS
|
||||
PrintJobPaginationMode? horizontalPagination;
|
||||
PrintJobPaginationMode_? horizontalPagination;
|
||||
|
||||
///The vertical pagination to the specified mode.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- MacOS
|
||||
PrintJobPaginationMode? verticalPagination;
|
||||
PrintJobPaginationMode_? verticalPagination;
|
||||
|
||||
///Indicates whether the image is centered horizontally.
|
||||
///The default value is `true`.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- MacOS
|
||||
bool isHorizontallyCentered;
|
||||
bool? isHorizontallyCentered;
|
||||
|
||||
///Indicates whether the image is centered vertically.
|
||||
///The default value is `true`.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- MacOS
|
||||
bool isVerticallyCentered;
|
||||
bool? isVerticallyCentered;
|
||||
|
||||
///The print order for the pages of the operation.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- MacOS
|
||||
PrintJobPageOrder? pageOrder;
|
||||
PrintJobPageOrder_? pageOrder;
|
||||
|
||||
///Whether the print operation should spawn a separate thread in which to run itself.
|
||||
///The default value is `true`.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- MacOS
|
||||
bool canSpawnSeparateThread;
|
||||
bool? canSpawnSeparateThread;
|
||||
|
||||
///How many copies to print.
|
||||
///The default value is `1`.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- MacOS
|
||||
int copies;
|
||||
int? copies;
|
||||
|
||||
///An integer value that specifies the first page in the print job.
|
||||
///
|
||||
|
@ -316,7 +330,7 @@ class PrintJobSettings {
|
|||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- MacOS
|
||||
bool detailedErrorReporting;
|
||||
bool? detailedErrorReporting;
|
||||
|
||||
///A fax number.
|
||||
///
|
||||
|
@ -329,7 +343,7 @@ class PrintJobSettings {
|
|||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- MacOS
|
||||
bool headerAndFooter;
|
||||
bool? headerAndFooter;
|
||||
|
||||
///If `true`, collates output.
|
||||
///
|
||||
|
@ -355,7 +369,7 @@ class PrintJobSettings {
|
|||
///- MacOS
|
||||
int? time;
|
||||
|
||||
PrintJobSettings(
|
||||
PrintJobSettings_(
|
||||
{this.handledByClient = false,
|
||||
this.jobName,
|
||||
this.animated = true,
|
||||
|
@ -403,128 +417,4 @@ class PrintJobSettings {
|
|||
this.pagesAcross,
|
||||
this.pagesDown,
|
||||
this.time});
|
||||
|
||||
///Gets a [PrintJobSettings] instance from a [Map] value.
|
||||
factory PrintJobSettings.fromMap(Map<String, dynamic> map) {
|
||||
return PrintJobSettings(
|
||||
handledByClient: map["handledByClient"],
|
||||
jobName: map["jobName"],
|
||||
animated: map["animated"],
|
||||
orientation: PrintJobOrientation.fromNativeValue(map["orientation"]),
|
||||
numberOfPages: map["numberOfPages"],
|
||||
forceRenderingQuality: PrintJobRenderingQuality.fromNativeValue(
|
||||
map["forceRenderingQuality"]),
|
||||
margins: MapEdgeInsets.fromMap(map["margins"]?.cast<String, dynamic>()),
|
||||
mediaSize: PrintJobMediaSize.fromMap(
|
||||
map["mediaSize"]?.cast<String, dynamic>()),
|
||||
colorMode: PrintJobColorMode.fromNativeValue(map["colorMode"]),
|
||||
duplexMode: PrintJobDuplexMode.fromNativeValue(map["duplexMode"]),
|
||||
outputType: PrintJobOutputType.fromNativeValue(map["outputType"]),
|
||||
resolution: PrintJobResolution.fromMap(
|
||||
map["resolution"]?.cast<String, dynamic>()),
|
||||
showsNumberOfCopies: map["showsNumberOfCopies"],
|
||||
showsPaperSelectionForLoadedPapers:
|
||||
map["showsPaperSelectionForLoadedPapers"],
|
||||
showsPaperOrientation: map["showsPaperOrientation"],
|
||||
maximumContentHeight: map["maximumContentHeight"],
|
||||
maximumContentWidth: map["maximumContentWidth"],
|
||||
footerHeight: map["footerHeight"],
|
||||
headerHeight: map["headerHeight"],
|
||||
showsPaperSize: map["showsPaperSize"],
|
||||
showsScaling: map["showsScaling"],
|
||||
showsPageRange: map["showsPageRange"],
|
||||
showsPageSetupAccessory: map["showsPageSetupAccessory"],
|
||||
showsPreview: map["showsPreview"],
|
||||
showsPrintSelection: map["showsPrintSelection"],
|
||||
scalingFactor: map["scalingFactor"],
|
||||
showsPrintPanel: map["showsPrintPanel"],
|
||||
showsProgressPanel: map["showsProgressPanel"],
|
||||
jobDisposition:
|
||||
PrintJobDisposition.fromNativeValue(map["jobDisposition"]),
|
||||
jobSavingURL:
|
||||
map["jobSavingURL"] != null ? WebUri(map["jobSavingURL"]) : null,
|
||||
paperName: map["paperName"],
|
||||
horizontalPagination:
|
||||
PrintJobPaginationMode.fromNativeValue(map["horizontalPagination"]),
|
||||
verticalPagination:
|
||||
PrintJobPaginationMode.fromNativeValue(map["verticalPagination"]),
|
||||
isHorizontallyCentered: map["isHorizontallyCentered"],
|
||||
isVerticallyCentered: map["isVerticallyCentered"],
|
||||
pageOrder: PrintJobPageOrder.fromNativeValue(map["pageOrder"]),
|
||||
canSpawnSeparateThread: map["canSpawnSeparateThread"],
|
||||
copies: map["copies"],
|
||||
firstPage: map["firstPage"],
|
||||
lastPage: map["lastPage"],
|
||||
detailedErrorReporting: map["detailedErrorReporting"],
|
||||
faxNumber: map["faxNumber"],
|
||||
headerAndFooter: map["headerAndFooter"],
|
||||
mustCollate: map["mustCollate"],
|
||||
pagesAcross: map["pagesAcross"],
|
||||
pagesDown: map["pagesDown"],
|
||||
time: map["time"]);
|
||||
}
|
||||
|
||||
Map<String, dynamic> toMap() {
|
||||
return {
|
||||
"handledByClient": handledByClient,
|
||||
"jobName": jobName,
|
||||
"animated": animated,
|
||||
"orientation": orientation?.toNativeValue(),
|
||||
"numberOfPages": numberOfPages,
|
||||
"forceRenderingQuality": forceRenderingQuality?.toNativeValue(),
|
||||
"margins": margins?.toMap(),
|
||||
"mediaSize": mediaSize?.toMap(),
|
||||
"colorMode": colorMode?.toNativeValue(),
|
||||
"duplexMode": duplexMode?.toNativeValue(),
|
||||
"outputType": outputType?.toNativeValue(),
|
||||
"resolution": resolution?.toMap(),
|
||||
"showsNumberOfCopies": showsNumberOfCopies,
|
||||
"showsPaperSelectionForLoadedPapers": showsPaperSelectionForLoadedPapers,
|
||||
"showsPaperOrientation": showsPaperOrientation,
|
||||
"maximumContentHeight": maximumContentHeight,
|
||||
"maximumContentWidth": maximumContentWidth,
|
||||
"footerHeight": footerHeight,
|
||||
"headerHeight": headerHeight,
|
||||
"showsPaperSize": showsPaperSize,
|
||||
"showsScaling": showsScaling,
|
||||
"showsPageRange": showsPageRange,
|
||||
"showsPageSetupAccessory": showsPageSetupAccessory,
|
||||
"showsPreview": showsPreview,
|
||||
"showsPrintSelection": showsPrintSelection,
|
||||
"scalingFactor": scalingFactor,
|
||||
"showsPrintPanel": showsPrintPanel,
|
||||
"showsProgressPanel": showsProgressPanel,
|
||||
"jobDisposition": jobDisposition?.toNativeValue(),
|
||||
"jobSavingURL": jobSavingURL.toString(),
|
||||
"paperName": paperName,
|
||||
"horizontalPagination": horizontalPagination?.toNativeValue(),
|
||||
"verticalPagination": verticalPagination?.toNativeValue(),
|
||||
"isHorizontallyCentered": isHorizontallyCentered,
|
||||
"isVerticallyCentered": isVerticallyCentered,
|
||||
"pageOrder": pageOrder?.toNativeValue(),
|
||||
"canSpawnSeparateThread": canSpawnSeparateThread,
|
||||
"copies": copies,
|
||||
"firstPage": firstPage,
|
||||
"lastPage": lastPage,
|
||||
"detailedErrorReporting": detailedErrorReporting,
|
||||
"faxNumber": faxNumber,
|
||||
"headerAndFooter": headerAndFooter,
|
||||
"mustCollate": mustCollate,
|
||||
"pagesAcross": pagesAcross,
|
||||
"pagesDown": pagesDown,
|
||||
"time": time
|
||||
};
|
||||
}
|
||||
|
||||
PrintJobSettings copy() {
|
||||
return PrintJobSettings.fromMap(toMap());
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
return toMap();
|
||||
}
|
||||
|
||||
String toString() {
|
||||
return toMap().toString();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,539 @@
|
|||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
|
||||
part of 'print_job_settings.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// ExchangeableObjectGenerator
|
||||
// **************************************************************************
|
||||
|
||||
///Class that represents the settings of a [PrintJobController].
|
||||
class PrintJobSettings {
|
||||
///Set this to `true` to handle the [PrintJobController].
|
||||
///Otherwise, it will be handled and disposed automatically by the system.
|
||||
///The default value is `false`.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- Android native WebView
|
||||
///- iOS
|
||||
///- MacOS
|
||||
bool? handledByClient;
|
||||
|
||||
///The name of the print job.
|
||||
///An application should set this property to a name appropriate to the content being printed.
|
||||
///The default job name is the current webpage title concatenated with the "Document" word at the end.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- Android native WebView
|
||||
///- iOS
|
||||
///- MacOS
|
||||
String? jobName;
|
||||
|
||||
///`true` to animate the display of the sheet, `false` to display the sheet immediately.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- iOS
|
||||
bool? animated;
|
||||
|
||||
///The orientation of the printed content, portrait or landscape.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- Android native WebView
|
||||
///- iOS
|
||||
///- MacOS
|
||||
PrintJobOrientation? orientation;
|
||||
|
||||
///The number of pages to render.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- iOS
|
||||
///- MacOS
|
||||
int? numberOfPages;
|
||||
|
||||
///Force rendering quality.
|
||||
///
|
||||
///**NOTE for iOS**: available only on iOS 14.5+.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- iOS
|
||||
PrintJobRenderingQuality? forceRenderingQuality;
|
||||
|
||||
///The margins for each printed page.
|
||||
///Margins define the white space around the content where the left margin defines
|
||||
///the amount of white space on the left of the content and so on.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- iOS
|
||||
///- MacOS
|
||||
EdgeInsets? margins;
|
||||
|
||||
///The media size.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- Android native WebView
|
||||
PrintJobMediaSize? mediaSize;
|
||||
|
||||
///The color mode.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- Android native WebView
|
||||
///- MacOS
|
||||
PrintJobColorMode? colorMode;
|
||||
|
||||
///The duplex mode to use for the print job.
|
||||
///
|
||||
///**NOTE for Android native WebView**: available only on Android 23+.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- Android native WebView
|
||||
///- iOS
|
||||
PrintJobDuplexMode? duplexMode;
|
||||
|
||||
///The kind of printable content.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- iOS
|
||||
PrintJobOutputType? outputType;
|
||||
|
||||
///The supported resolution in DPI (dots per inch).
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- Android native WebView
|
||||
PrintJobResolution? resolution;
|
||||
|
||||
///A Boolean value that determines whether the printing options include the number of copies.
|
||||
///The default value is `true`.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- iOS
|
||||
///- MacOS
|
||||
bool? showsNumberOfCopies;
|
||||
|
||||
///A Boolean value that determines whether the paper selection menu displays.
|
||||
///The default value of this property is `false`.
|
||||
///Setting the value to `true` enables a paper selection menu on printers that support different types of paper and have more than one paper type loaded.
|
||||
///On printers where only one paper type is available, no paper selection menu is displayed, regardless of the value of this property.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- iOS
|
||||
bool? showsPaperSelectionForLoadedPapers;
|
||||
|
||||
///A Boolean value that determines whether the printing options include the paper orientation control when available.
|
||||
///The default value is `true`.
|
||||
///
|
||||
///**NOTE for iOS**: available only on iOS 15.0+.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- iOS
|
||||
///- MacOS
|
||||
bool? showsPaperOrientation;
|
||||
|
||||
///A Boolean value that determines whether the print panel includes a control for manipulating the paper size of the printer.
|
||||
///The default value is `true`.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- MacOS
|
||||
bool? showsPaperSize;
|
||||
|
||||
///A Boolean value that determines whether the Print panel includes a control for scaling the printed output.
|
||||
///The default value is `true`.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- MacOS
|
||||
bool? showsScaling;
|
||||
|
||||
///A Boolean value that determines whether the Print panel includes a set of fields for manipulating the range of pages being printed.
|
||||
///The default value is `true`.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- MacOS
|
||||
bool? showsPageRange;
|
||||
|
||||
///A Boolean value that determines whether the Print panel includes a separate accessory view for manipulating the paper size, orientation, and scaling attributes.
|
||||
///The default value is `true`.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- MacOS
|
||||
bool? showsPageSetupAccessory;
|
||||
|
||||
///A Boolean value that determines whether the Print panel displays a built-in preview of the document contents.
|
||||
///The default value is `true`.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- MacOS
|
||||
bool? showsPreview;
|
||||
|
||||
///A Boolean value that determines whether the Print panel includes an additional selection option for paper range.
|
||||
///The default value is `true`.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- MacOS
|
||||
bool? showsPrintSelection;
|
||||
|
||||
///A Boolean value that determines whether the print operation displays a print panel.
|
||||
///The default value is `true`.
|
||||
///
|
||||
///This property does not affect the display of a progress panel;
|
||||
///that operation is controlled by the [showsProgressPanel] property.
|
||||
///Operations that generate EPS or PDF data do no display a progress panel, regardless of the value in the flag parameter.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- MacOS
|
||||
bool? showsPrintPanel;
|
||||
|
||||
///A Boolean value that determines whether the print operation displays a progress panel.
|
||||
///The default value is `true`.
|
||||
///
|
||||
///This property does not affect the display of a print panel;
|
||||
///that operation is controlled by the [showsPrintPanel] property.
|
||||
///Operations that generate EPS or PDF data do no display a progress panel, regardless of the value in the flag parameter.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- MacOS
|
||||
bool? showsProgressPanel;
|
||||
|
||||
///The height of the page footer.
|
||||
///
|
||||
///The footer is measured in points from the bottom of [printableRect] and is below the content area.
|
||||
///The default footer height is `0.0`.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- iOS
|
||||
double? footerHeight;
|
||||
|
||||
///The height of the page header.
|
||||
///
|
||||
///The header is measured in points from the top of [printableRect] and is above the content area.
|
||||
///The default header height is `0.0`.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- iOS
|
||||
double? headerHeight;
|
||||
|
||||
///The maximum height of the content area.
|
||||
///
|
||||
///The Print Formatter uses this value to determine where the content rectangle begins on the first page.
|
||||
///It compares the value of this property with the printing rectangle’s height minus the header and footer heights and
|
||||
///the top inset value; it uses the lower of the two values.
|
||||
///The default value of this property is the maximum float value.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- iOS
|
||||
double? maximumContentHeight;
|
||||
|
||||
///The maximum width of the content area.
|
||||
///
|
||||
///The Print Formatter uses this value to determine the maximum width of the content rectangle.
|
||||
///It compares the value of this property with the printing rectangle’s width minus the left and right inset values and uses the lower of the two.
|
||||
///The default value of this property is the maximum float value.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- iOS
|
||||
double? maximumContentWidth;
|
||||
|
||||
///The current scaling factor. From `0.0` to `1.0`.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- MacOS
|
||||
double? scalingFactor;
|
||||
|
||||
///The action specified for the job.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- MacOS
|
||||
PrintJobDisposition? jobDisposition;
|
||||
|
||||
///An URL containing the location to which the job file will be saved when the [jobDisposition] is [PrintJobDisposition.SAVE].
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- MacOS
|
||||
WebUri? jobSavingURL;
|
||||
|
||||
///The name of the currently selected paper size.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- MacOS
|
||||
String? paperName;
|
||||
|
||||
///The horizontal pagination mode.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- MacOS
|
||||
PrintJobPaginationMode? horizontalPagination;
|
||||
|
||||
///The vertical pagination to the specified mode.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- MacOS
|
||||
PrintJobPaginationMode? verticalPagination;
|
||||
|
||||
///Indicates whether the image is centered horizontally.
|
||||
///The default value is `true`.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- MacOS
|
||||
bool? isHorizontallyCentered;
|
||||
|
||||
///Indicates whether the image is centered vertically.
|
||||
///The default value is `true`.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- MacOS
|
||||
bool? isVerticallyCentered;
|
||||
|
||||
///The print order for the pages of the operation.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- MacOS
|
||||
PrintJobPageOrder? pageOrder;
|
||||
|
||||
///Whether the print operation should spawn a separate thread in which to run itself.
|
||||
///The default value is `true`.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- MacOS
|
||||
bool? canSpawnSeparateThread;
|
||||
|
||||
///How many copies to print.
|
||||
///The default value is `1`.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- MacOS
|
||||
int? copies;
|
||||
|
||||
///An integer value that specifies the first page in the print job.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- MacOS
|
||||
int? firstPage;
|
||||
|
||||
///An integer value that specifies the last page in the print job.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- MacOS
|
||||
int? lastPage;
|
||||
|
||||
///If `true`, produce detailed reports when an error occurs.
|
||||
///The default value is `false`.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- MacOS
|
||||
bool? detailedErrorReporting;
|
||||
|
||||
///A fax number.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- MacOS
|
||||
String? faxNumber;
|
||||
|
||||
///If `true`, a standard header and footer are added outside the margins of each page.
|
||||
///The default value is `true`.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- MacOS
|
||||
bool? headerAndFooter;
|
||||
|
||||
///If `true`, collates output.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- MacOS
|
||||
bool? mustCollate;
|
||||
|
||||
///The number of logical pages to be tiled horizontally on a physical sheet of paper.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- MacOS
|
||||
int? pagesAcross;
|
||||
|
||||
///The number of logical pages to be tiled vertically on a physical sheet of paper.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- MacOS
|
||||
int? pagesDown;
|
||||
|
||||
///A timestamp that specifies the time at which printing should begin.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- MacOS
|
||||
int? time;
|
||||
PrintJobSettings(
|
||||
{this.handledByClient = false,
|
||||
this.jobName,
|
||||
this.animated = true,
|
||||
this.orientation,
|
||||
this.numberOfPages,
|
||||
this.forceRenderingQuality,
|
||||
this.margins,
|
||||
this.mediaSize,
|
||||
this.colorMode,
|
||||
this.duplexMode,
|
||||
this.outputType,
|
||||
this.resolution,
|
||||
this.showsNumberOfCopies = true,
|
||||
this.showsPaperSelectionForLoadedPapers = false,
|
||||
this.showsPaperOrientation = true,
|
||||
this.showsPaperSize = true,
|
||||
this.showsScaling = true,
|
||||
this.showsPageRange = true,
|
||||
this.showsPageSetupAccessory = true,
|
||||
this.showsPreview = true,
|
||||
this.showsPrintSelection = true,
|
||||
this.showsPrintPanel = true,
|
||||
this.showsProgressPanel = true,
|
||||
this.footerHeight,
|
||||
this.headerHeight,
|
||||
this.maximumContentHeight,
|
||||
this.maximumContentWidth,
|
||||
this.scalingFactor,
|
||||
this.jobDisposition,
|
||||
this.jobSavingURL,
|
||||
this.paperName,
|
||||
this.horizontalPagination,
|
||||
this.verticalPagination,
|
||||
this.isHorizontallyCentered = true,
|
||||
this.isVerticallyCentered = true,
|
||||
this.pageOrder,
|
||||
this.canSpawnSeparateThread = true,
|
||||
this.copies = 1,
|
||||
this.firstPage,
|
||||
this.lastPage,
|
||||
this.detailedErrorReporting = false,
|
||||
this.faxNumber,
|
||||
this.headerAndFooter = true,
|
||||
this.mustCollate,
|
||||
this.pagesAcross,
|
||||
this.pagesDown,
|
||||
this.time});
|
||||
|
||||
///Gets a possible [PrintJobSettings] instance from a [Map] value.
|
||||
static PrintJobSettings? fromMap(Map<String, dynamic>? map) {
|
||||
if (map == null) {
|
||||
return null;
|
||||
}
|
||||
final instance = PrintJobSettings(
|
||||
jobName: map['jobName'],
|
||||
orientation: PrintJobOrientation.fromNativeValue(map['orientation']),
|
||||
numberOfPages: map['numberOfPages'],
|
||||
forceRenderingQuality: PrintJobRenderingQuality.fromNativeValue(
|
||||
map['forceRenderingQuality']),
|
||||
margins: MapEdgeInsets.fromMap(map['margins']?.cast<String, dynamic>()),
|
||||
mediaSize:
|
||||
PrintJobMediaSize.fromMap(map['mediaSize']?.cast<String, dynamic>()),
|
||||
colorMode: PrintJobColorMode.fromNativeValue(map['colorMode']),
|
||||
duplexMode: PrintJobDuplexMode.fromNativeValue(map['duplexMode']),
|
||||
outputType: PrintJobOutputType.fromNativeValue(map['outputType']),
|
||||
resolution: PrintJobResolution.fromMap(
|
||||
map['resolution']?.cast<String, dynamic>()),
|
||||
footerHeight: map['footerHeight'],
|
||||
headerHeight: map['headerHeight'],
|
||||
maximumContentHeight: map['maximumContentHeight'],
|
||||
maximumContentWidth: map['maximumContentWidth'],
|
||||
scalingFactor: map['scalingFactor'],
|
||||
jobDisposition:
|
||||
PrintJobDisposition.fromNativeValue(map['jobDisposition']),
|
||||
jobSavingURL:
|
||||
map['jobSavingURL'] != null ? WebUri(map['jobSavingURL']) : null,
|
||||
paperName: map['paperName'],
|
||||
horizontalPagination:
|
||||
PrintJobPaginationMode.fromNativeValue(map['horizontalPagination']),
|
||||
verticalPagination:
|
||||
PrintJobPaginationMode.fromNativeValue(map['verticalPagination']),
|
||||
pageOrder: PrintJobPageOrder.fromNativeValue(map['pageOrder']),
|
||||
firstPage: map['firstPage'],
|
||||
lastPage: map['lastPage'],
|
||||
faxNumber: map['faxNumber'],
|
||||
mustCollate: map['mustCollate'],
|
||||
pagesAcross: map['pagesAcross'],
|
||||
pagesDown: map['pagesDown'],
|
||||
time: map['time'],
|
||||
);
|
||||
instance.handledByClient = map['handledByClient'];
|
||||
instance.animated = map['animated'];
|
||||
instance.showsNumberOfCopies = map['showsNumberOfCopies'];
|
||||
instance.showsPaperSelectionForLoadedPapers =
|
||||
map['showsPaperSelectionForLoadedPapers'];
|
||||
instance.showsPaperOrientation = map['showsPaperOrientation'];
|
||||
instance.showsPaperSize = map['showsPaperSize'];
|
||||
instance.showsScaling = map['showsScaling'];
|
||||
instance.showsPageRange = map['showsPageRange'];
|
||||
instance.showsPageSetupAccessory = map['showsPageSetupAccessory'];
|
||||
instance.showsPreview = map['showsPreview'];
|
||||
instance.showsPrintSelection = map['showsPrintSelection'];
|
||||
instance.showsPrintPanel = map['showsPrintPanel'];
|
||||
instance.showsProgressPanel = map['showsProgressPanel'];
|
||||
instance.isHorizontallyCentered = map['isHorizontallyCentered'];
|
||||
instance.isVerticallyCentered = map['isVerticallyCentered'];
|
||||
instance.canSpawnSeparateThread = map['canSpawnSeparateThread'];
|
||||
instance.copies = map['copies'];
|
||||
instance.detailedErrorReporting = map['detailedErrorReporting'];
|
||||
instance.headerAndFooter = map['headerAndFooter'];
|
||||
return instance;
|
||||
}
|
||||
|
||||
///Converts instance to a map.
|
||||
Map<String, dynamic> toMap() {
|
||||
return {
|
||||
"handledByClient": handledByClient,
|
||||
"jobName": jobName,
|
||||
"animated": animated,
|
||||
"orientation": orientation?.toNativeValue(),
|
||||
"numberOfPages": numberOfPages,
|
||||
"forceRenderingQuality": forceRenderingQuality?.toNativeValue(),
|
||||
"margins": margins?.toMap(),
|
||||
"mediaSize": mediaSize?.toMap(),
|
||||
"colorMode": colorMode?.toNativeValue(),
|
||||
"duplexMode": duplexMode?.toNativeValue(),
|
||||
"outputType": outputType?.toNativeValue(),
|
||||
"resolution": resolution?.toMap(),
|
||||
"showsNumberOfCopies": showsNumberOfCopies,
|
||||
"showsPaperSelectionForLoadedPapers": showsPaperSelectionForLoadedPapers,
|
||||
"showsPaperOrientation": showsPaperOrientation,
|
||||
"showsPaperSize": showsPaperSize,
|
||||
"showsScaling": showsScaling,
|
||||
"showsPageRange": showsPageRange,
|
||||
"showsPageSetupAccessory": showsPageSetupAccessory,
|
||||
"showsPreview": showsPreview,
|
||||
"showsPrintSelection": showsPrintSelection,
|
||||
"showsPrintPanel": showsPrintPanel,
|
||||
"showsProgressPanel": showsProgressPanel,
|
||||
"footerHeight": footerHeight,
|
||||
"headerHeight": headerHeight,
|
||||
"maximumContentHeight": maximumContentHeight,
|
||||
"maximumContentWidth": maximumContentWidth,
|
||||
"scalingFactor": scalingFactor,
|
||||
"jobDisposition": jobDisposition?.toNativeValue(),
|
||||
"jobSavingURL": jobSavingURL?.toString(),
|
||||
"paperName": paperName,
|
||||
"horizontalPagination": horizontalPagination?.toNativeValue(),
|
||||
"verticalPagination": verticalPagination?.toNativeValue(),
|
||||
"isHorizontallyCentered": isHorizontallyCentered,
|
||||
"isVerticallyCentered": isVerticallyCentered,
|
||||
"pageOrder": pageOrder?.toNativeValue(),
|
||||
"canSpawnSeparateThread": canSpawnSeparateThread,
|
||||
"copies": copies,
|
||||
"firstPage": firstPage,
|
||||
"lastPage": lastPage,
|
||||
"detailedErrorReporting": detailedErrorReporting,
|
||||
"faxNumber": faxNumber,
|
||||
"headerAndFooter": headerAndFooter,
|
||||
"mustCollate": mustCollate,
|
||||
"pagesAcross": pagesAcross,
|
||||
"pagesDown": pagesDown,
|
||||
"time": time,
|
||||
};
|
||||
}
|
||||
|
||||
///Converts instance to a map.
|
||||
Map<String, dynamic> toJson() {
|
||||
return toMap();
|
||||
}
|
||||
|
||||
///Returns a copy of PrintJobSettings.
|
||||
PrintJobSettings copy() {
|
||||
return PrintJobSettings.fromMap(toMap()) ?? PrintJobSettings();
|
||||
}
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'PrintJobSettings{handledByClient: $handledByClient, jobName: $jobName, animated: $animated, orientation: $orientation, numberOfPages: $numberOfPages, forceRenderingQuality: $forceRenderingQuality, margins: $margins, mediaSize: $mediaSize, colorMode: $colorMode, duplexMode: $duplexMode, outputType: $outputType, resolution: $resolution, showsNumberOfCopies: $showsNumberOfCopies, showsPaperSelectionForLoadedPapers: $showsPaperSelectionForLoadedPapers, showsPaperOrientation: $showsPaperOrientation, showsPaperSize: $showsPaperSize, showsScaling: $showsScaling, showsPageRange: $showsPageRange, showsPageSetupAccessory: $showsPageSetupAccessory, showsPreview: $showsPreview, showsPrintSelection: $showsPrintSelection, showsPrintPanel: $showsPrintPanel, showsProgressPanel: $showsProgressPanel, footerHeight: $footerHeight, headerHeight: $headerHeight, maximumContentHeight: $maximumContentHeight, maximumContentWidth: $maximumContentWidth, scalingFactor: $scalingFactor, jobDisposition: $jobDisposition, jobSavingURL: $jobSavingURL, paperName: $paperName, horizontalPagination: $horizontalPagination, verticalPagination: $verticalPagination, isHorizontallyCentered: $isHorizontallyCentered, isVerticallyCentered: $isVerticallyCentered, pageOrder: $pageOrder, canSpawnSeparateThread: $canSpawnSeparateThread, copies: $copies, firstPage: $firstPage, lastPage: $lastPage, detailedErrorReporting: $detailedErrorReporting, faxNumber: $faxNumber, headerAndFooter: $headerAndFooter, mustCollate: $mustCollate, pagesAcross: $pagesAcross, pagesDown: $pagesDown, time: $time}';
|
||||
}
|
||||
}
|
|
@ -1,2 +1,3 @@
|
|||
export 'pull_to_refresh_controller.dart';
|
||||
export 'pull_to_refresh_settings.dart';
|
||||
export 'pull_to_refresh_settings.dart'
|
||||
show PullToRefreshSettings, PullToRefreshOptions;
|
||||
|
|
|
@ -1,39 +1,63 @@
|
|||
import 'dart:ui';
|
||||
import 'package:flutter_inappwebview_internal_annotations/flutter_inappwebview_internal_annotations.dart';
|
||||
|
||||
import '../types/attributed_string.dart';
|
||||
import '../types/pull_to_refresh_size.dart';
|
||||
import '../util.dart';
|
||||
import '../types/main.dart';
|
||||
|
||||
part 'pull_to_refresh_settings.g.dart';
|
||||
|
||||
///Pull-To-Refresh Settings
|
||||
class PullToRefreshSettings {
|
||||
@ExchangeableObject(copyMethod: true)
|
||||
class PullToRefreshSettings_ {
|
||||
///Sets whether the pull-to-refresh feature is enabled or not.
|
||||
bool enabled;
|
||||
///The default value is `true`.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- Android native WebView
|
||||
///- iOS
|
||||
bool? enabled;
|
||||
|
||||
///The color of the refresh control.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- Android native WebView
|
||||
///- iOS
|
||||
Color? color;
|
||||
|
||||
///The background color of the refresh control.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- Android native WebView
|
||||
///- iOS
|
||||
Color? backgroundColor;
|
||||
|
||||
///The distance to trigger a sync in dips.
|
||||
///
|
||||
///**NOTE**: Available only on Android.
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- Android native WebView
|
||||
int? distanceToTriggerSync;
|
||||
|
||||
///The distance in pixels that the refresh indicator can be pulled beyond its resting position.
|
||||
///
|
||||
///**NOTE**: Available only on Android.
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- Android native WebView
|
||||
int? slingshotDistance;
|
||||
|
||||
///The size of the refresh indicator.
|
||||
///
|
||||
///**NOTE**: Available only on Android.
|
||||
PullToRefreshSize? size;
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- Android native WebView
|
||||
PullToRefreshSize_? size;
|
||||
|
||||
///The title text to display in the refresh control.
|
||||
///
|
||||
///**NOTE**: Available only on iOS.
|
||||
AttributedString? attributedTitle;
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- iOS
|
||||
AttributedString_? attributedTitle;
|
||||
|
||||
PullToRefreshSettings(
|
||||
PullToRefreshSettings_(
|
||||
{this.enabled = true,
|
||||
this.color,
|
||||
this.backgroundColor,
|
||||
|
@ -41,27 +65,6 @@ class PullToRefreshSettings {
|
|||
this.slingshotDistance,
|
||||
this.size,
|
||||
this.attributedTitle});
|
||||
|
||||
Map<String, dynamic> toMap() {
|
||||
return {
|
||||
"enabled": enabled,
|
||||
"color": color?.toHex(),
|
||||
"backgroundColor": backgroundColor?.toHex(),
|
||||
"distanceToTriggerSync": distanceToTriggerSync,
|
||||
"slingshotDistance": slingshotDistance,
|
||||
"size": size?.toNativeValue(),
|
||||
"attributedTitle": attributedTitle?.toMap() ?? {}
|
||||
};
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
return toMap();
|
||||
}
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return toMap().toString();
|
||||
}
|
||||
}
|
||||
|
||||
///Use [PullToRefreshSettings] instead.
|
||||
|
|
|
@ -0,0 +1,114 @@
|
|||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
|
||||
part of 'pull_to_refresh_settings.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// ExchangeableObjectGenerator
|
||||
// **************************************************************************
|
||||
|
||||
///Pull-To-Refresh Settings
|
||||
class PullToRefreshSettings {
|
||||
///Sets whether the pull-to-refresh feature is enabled or not.
|
||||
///The default value is `true`.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- Android native WebView
|
||||
///- iOS
|
||||
bool? enabled;
|
||||
|
||||
///The color of the refresh control.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- Android native WebView
|
||||
///- iOS
|
||||
Color? color;
|
||||
|
||||
///The background color of the refresh control.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- Android native WebView
|
||||
///- iOS
|
||||
Color? backgroundColor;
|
||||
|
||||
///The distance to trigger a sync in dips.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- Android native WebView
|
||||
int? distanceToTriggerSync;
|
||||
|
||||
///The distance in pixels that the refresh indicator can be pulled beyond its resting position.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- Android native WebView
|
||||
int? slingshotDistance;
|
||||
|
||||
///The size of the refresh indicator.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- Android native WebView
|
||||
PullToRefreshSize? size;
|
||||
|
||||
///The title text to display in the refresh control.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- iOS
|
||||
AttributedString? attributedTitle;
|
||||
PullToRefreshSettings(
|
||||
{this.enabled = true,
|
||||
this.color,
|
||||
this.backgroundColor,
|
||||
this.distanceToTriggerSync,
|
||||
this.slingshotDistance,
|
||||
this.size,
|
||||
this.attributedTitle});
|
||||
|
||||
///Gets a possible [PullToRefreshSettings] instance from a [Map] value.
|
||||
static PullToRefreshSettings? fromMap(Map<String, dynamic>? map) {
|
||||
if (map == null) {
|
||||
return null;
|
||||
}
|
||||
final instance = PullToRefreshSettings(
|
||||
color: map['color'] != null
|
||||
? UtilColor.fromStringRepresentation(map['color'])
|
||||
: null,
|
||||
backgroundColor: map['backgroundColor'] != null
|
||||
? UtilColor.fromStringRepresentation(map['backgroundColor'])
|
||||
: null,
|
||||
distanceToTriggerSync: map['distanceToTriggerSync'],
|
||||
slingshotDistance: map['slingshotDistance'],
|
||||
size: PullToRefreshSize.fromNativeValue(map['size']),
|
||||
attributedTitle: AttributedString.fromMap(
|
||||
map['attributedTitle']?.cast<String, dynamic>()),
|
||||
);
|
||||
instance.enabled = map['enabled'];
|
||||
return instance;
|
||||
}
|
||||
|
||||
///Converts instance to a map.
|
||||
Map<String, dynamic> toMap() {
|
||||
return {
|
||||
"enabled": enabled,
|
||||
"color": color?.toHex(),
|
||||
"backgroundColor": backgroundColor?.toHex(),
|
||||
"distanceToTriggerSync": distanceToTriggerSync,
|
||||
"slingshotDistance": slingshotDistance,
|
||||
"size": size?.toNativeValue(),
|
||||
"attributedTitle": attributedTitle?.toMap(),
|
||||
};
|
||||
}
|
||||
|
||||
///Converts instance to a map.
|
||||
Map<String, dynamic> toJson() {
|
||||
return toMap();
|
||||
}
|
||||
|
||||
///Returns a copy of PullToRefreshSettings.
|
||||
PullToRefreshSettings copy() {
|
||||
return PullToRefreshSettings.fromMap(toMap()) ?? PullToRefreshSettings();
|
||||
}
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'PullToRefreshSettings{enabled: $enabled, color: $color, backgroundColor: $backgroundColor, distanceToTriggerSync: $distanceToTriggerSync, slingshotDistance: $slingshotDistance, size: $size, attributedTitle: $attributedTitle}';
|
||||
}
|
||||
}
|
|
@ -1,2 +1,3 @@
|
|||
export 'web_authenticate_session.dart';
|
||||
export 'web_authenticate_session_settings.dart';
|
||||
export 'web_authenticate_session_settings.dart'
|
||||
show WebAuthenticationSessionSettings;
|
||||
|
|
|
@ -1,8 +1,11 @@
|
|||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter_inappwebview_internal_annotations/flutter_inappwebview_internal_annotations.dart';
|
||||
import 'web_authenticate_session.dart';
|
||||
|
||||
part 'web_authenticate_session_settings.g.dart';
|
||||
|
||||
///Class that represents the settings that can be used for a [WebAuthenticationSession].
|
||||
class WebAuthenticationSessionSettings {
|
||||
@ExchangeableObject(copyMethod: true)
|
||||
class WebAuthenticationSessionSettings_ {
|
||||
///A Boolean value that indicates whether the session should ask the browser for a private authentication session.
|
||||
///
|
||||
///Set [prefersEphemeralWebBrowserSession] to `true` to request that the browser
|
||||
|
@ -21,9 +24,9 @@ class WebAuthenticationSessionSettings {
|
|||
///**Supported Platforms/Implementations**:
|
||||
///- iOS
|
||||
///- MacOS
|
||||
bool prefersEphemeralWebBrowserSession;
|
||||
bool? prefersEphemeralWebBrowserSession;
|
||||
|
||||
WebAuthenticationSessionSettings(
|
||||
WebAuthenticationSessionSettings_(
|
||||
{this.prefersEphemeralWebBrowserSession = false});
|
||||
|
||||
Map<String, dynamic> toMap() {
|
||||
|
@ -31,28 +34,4 @@ class WebAuthenticationSessionSettings {
|
|||
"prefersEphemeralWebBrowserSession": prefersEphemeralWebBrowserSession
|
||||
};
|
||||
}
|
||||
|
||||
static WebAuthenticationSessionSettings fromMap(Map<String, dynamic> map) {
|
||||
WebAuthenticationSessionSettings settings =
|
||||
new WebAuthenticationSessionSettings();
|
||||
if (defaultTargetPlatform == TargetPlatform.iOS ||
|
||||
defaultTargetPlatform == TargetPlatform.macOS) {
|
||||
settings.prefersEphemeralWebBrowserSession =
|
||||
map["prefersEphemeralWebBrowserSession"];
|
||||
}
|
||||
return settings;
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
return this.toMap();
|
||||
}
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return toMap().toString();
|
||||
}
|
||||
|
||||
WebAuthenticationSessionSettings copy() {
|
||||
return WebAuthenticationSessionSettings.fromMap(this.toMap());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,65 @@
|
|||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
|
||||
part of 'web_authenticate_session_settings.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// ExchangeableObjectGenerator
|
||||
// **************************************************************************
|
||||
|
||||
///Class that represents the settings that can be used for a [WebAuthenticationSession].
|
||||
class WebAuthenticationSessionSettings {
|
||||
///A Boolean value that indicates whether the session should ask the browser for a private authentication session.
|
||||
///
|
||||
///Set [prefersEphemeralWebBrowserSession] to `true` to request that the browser
|
||||
///doesn’t share cookies or other browsing data between the authentication session and the user’s normal browser session.
|
||||
///Whether the request is honored depends on the user’s default web browser.
|
||||
///Safari always honors the request.
|
||||
///
|
||||
///The value of this property is `false` by default.
|
||||
///
|
||||
///Set this property before you call [WebAuthenticationSession.start]. Otherwise it has no effect.
|
||||
///
|
||||
///**NOTE for iOS**: Available only on iOS 13.0+.
|
||||
///
|
||||
///**NOTE for MacOS**: Available only on iOS 10.15+.
|
||||
///
|
||||
///**Supported Platforms/Implementations**:
|
||||
///- iOS
|
||||
///- MacOS
|
||||
bool? prefersEphemeralWebBrowserSession;
|
||||
WebAuthenticationSessionSettings(
|
||||
{this.prefersEphemeralWebBrowserSession = false});
|
||||
|
||||
///Gets a possible [WebAuthenticationSessionSettings] instance from a [Map] value.
|
||||
static WebAuthenticationSessionSettings? fromMap(Map<String, dynamic>? map) {
|
||||
if (map == null) {
|
||||
return null;
|
||||
}
|
||||
final instance = WebAuthenticationSessionSettings();
|
||||
instance.prefersEphemeralWebBrowserSession =
|
||||
map['prefersEphemeralWebBrowserSession'];
|
||||
return instance;
|
||||
}
|
||||
|
||||
Map<String, dynamic> toMap() {
|
||||
return {
|
||||
"prefersEphemeralWebBrowserSession": prefersEphemeralWebBrowserSession
|
||||
};
|
||||
}
|
||||
|
||||
///Converts instance to a map.
|
||||
Map<String, dynamic> toJson() {
|
||||
return toMap();
|
||||
}
|
||||
|
||||
///Returns a copy of WebAuthenticationSessionSettings.
|
||||
WebAuthenticationSessionSettings copy() {
|
||||
return WebAuthenticationSessionSettings.fromMap(toMap()) ??
|
||||
WebAuthenticationSessionSettings();
|
||||
}
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'WebAuthenticationSessionSettings{prefersEphemeralWebBrowserSession: $prefersEphemeralWebBrowserSession}';
|
||||
}
|
||||
}
|
|
@ -1,6 +1,6 @@
|
|||
name: flutter_inappwebview
|
||||
description: A Flutter plugin that allows you to add an inline webview, to use an headless webview, and to open an in-app browser window.
|
||||
version: 6.0.0-beta.14
|
||||
version: 6.0.0-beta.15
|
||||
homepage: https://inappwebview.dev/
|
||||
repository: https://github.com/pichillilorenzo/flutter_inappwebview
|
||||
issue_tracker: https://github.com/pichillilorenzo/flutter_inappwebview/issues
|
||||
|
|
Loading…
Reference in New Issue