open method
Future<void>
open({
- WebUri? url,
- Map<
String, String> ? headers, - List<
WebUri> ? otherLikelyURLs, - WebUri? referrer,
- @Deprecated('Use settings instead') ChromeSafariBrowserClassOptions? options,
- ChromeSafariBrowserSettings? settings,
Opens the PlatformChromeSafariBrowser
instance with an url
.
url
- The url
to load. On iOS, the url
is required and must use the http
or https
scheme.
headers
(Supported only on Android) - whitelisted cross-origin request headers.
It is possible to attach non-whitelisted headers to cross-origin requests, when the server and client are related using a
digital asset link.
otherLikelyURLs
- Other likely destinations, sorted in decreasing likelihood order. Supported only on Android.
referrer
- referrer header. Supported only on Android.
options
- Deprecated. Use settings
instead.
settings
- Settings for the PlatformChromeSafariBrowser
.
Officially Supported Platforms/Implementations:
- Android
- iOS
Implementation
@override
Future<void> open(
{WebUri? url,
Map<String, String>? headers,
List<WebUri>? otherLikelyURLs,
WebUri? referrer,
@Deprecated('Use settings instead')
// ignore: deprecated_member_use_from_same_package
ChromeSafariBrowserClassOptions? options,
ChromeSafariBrowserSettings? settings}) async {
assert(!_isOpened, 'The browser is already opened.');
_isOpened = true;
if (Util.isIOS) {
assert(url != null, 'The specified URL must not be null on iOS.');
assert(['http', 'https'].contains(url!.scheme),
'The specified URL has an unsupported scheme. Only HTTP and HTTPS URLs are supported on iOS.');
}
if (url != null) {
assert(url.toString().isNotEmpty, 'The specified URL must not be empty.');
}
_init();
List<Map<String, dynamic>> menuItemList = [];
_menuItems.forEach((key, value) {
menuItemList.add(value.toMap());
});
var initialSettings = settings?.toMap() ??
options?.toMap() ??
ChromeSafariBrowserSettings().toMap();
Map<String, dynamic> args = <String, dynamic>{};
args.putIfAbsent('id', () => id);
args.putIfAbsent('url', () => url?.toString());
args.putIfAbsent('headers', () => headers);
args.putIfAbsent('otherLikelyURLs',
() => otherLikelyURLs?.map((e) => e.toString()).toList());
args.putIfAbsent('referrer', () => referrer?.toString());
args.putIfAbsent('settings', () => initialSettings);
args.putIfAbsent('actionButton', () => _actionButton?.toMap());
args.putIfAbsent('secondaryToolbar', () => _secondaryToolbar?.toMap());
args.putIfAbsent('menuItemList', () => menuItemList);
await _staticChannel.invokeMethod('open', args);
}