import 'windows_protocol.dart' if (dart.library.js_interop) 'web_url_protocol.dart'; /// Registers a protocol by [scheme] to allow for links in the form `://...` /// to be processed by this application. By default, opening a link will open /// the executable that was used to register the scheme with the URL as the first /// argument passed to the executable. /// /// If a protocol is already registered for the given scheme, this function will /// attempt to overwrite the previous handler with the current executable information. /// However, note that depending on process permissions, this operation may be /// disallowed by the underlying platform. /// /// You may pass an [executable] to override the path to the executable to run /// when accessing the URL. /// /// [arguments] is a list of arguments to be used when running the executable. /// If passed, the list must contain at least one element, and at least one of /// those elements must contain the literal value `%s` to denote the URL to open. /// Quoting arguments is not necessary, as this will be handled for you. /// Escaping the `%s` as an unprocessed literal is currently unsupported. void registerProtocolHandler( String scheme, { String? executable, List? arguments, }) { WindowsProtocolHandler().register( scheme, executable: executable, arguments: arguments, ); } /// Unregisters the protocol handler with the underlying platform. The provided /// [scheme] will no longer be used in links. /// /// Note that this will unregister a protocol by scheme regardless of which process /// had registered it. Unregistering a scheme that was not registered by this /// application is undefined and depends on platform-specific restrictions. void unregisterProtocolHandler(String scheme) { WindowsProtocolHandler().unregister(scheme); }