// Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. import 'package:pigeon/pigeon.dart'; @ConfigurePigeon(PigeonOptions( dartOut: 'lib/src/messages.g.dart', swiftOut: 'ios/url_launcher_ios/Sources/url_launcher_ios/messages.g.swift', copyrightHeader: 'pigeons/copyright.txt', )) /// Possible outcomes of launching a URL. enum LaunchResult { /// The URL was successfully launched (or could be, for `canLaunchUrl`). success, /// There was no handler available for the URL. failure, /// The URL could not be launched because it is invalid. invalidUrl, } /// Possible outcomes of handling a URL within the application. enum InAppLoadResult { /// The URL was successfully loaded. success, /// The URL did not load successfully. failedToLoad, /// The URL could not be launched because it is invalid. invalidUrl, } @HostApi() abstract class UrlLauncherApi { /// Checks whether a URL can be loaded. @ObjCSelector('canLaunchURL:') LaunchResult canLaunchUrl(String url); /// Opens the URL externally, returning the status of launching it. @async @ObjCSelector('launchURL:universalLinksOnly:') LaunchResult launchUrl(String url, bool universalLinksOnly); /// Opens the URL in an in-app SFSafariViewController, returning the results /// of loading it. @async @ObjCSelector('openSafariViewControllerWithURL:') InAppLoadResult openUrlInSafariViewController(String url); /// Closes the view controller opened by [openUrlInSafariViewController]. void closeSafariViewController(); }