import "dart:async"; import "package:app_links_platform_interface/app_links_platform_interface.dart"; import "package:url_launcher_platform_interface/link.dart"; import "package:url_launcher_platform_interface/url_launcher_platform_interface.dart"; /// Delivers links to the app as if the OS had opened them. class FakeAppLinks extends AppLinksPlatform { final _links = StreamController.broadcast(); void open(Uri uri) => _links.add(uri); @override Future getInitialLink() async => null; @override Future getInitialLinkString() async => null; @override Future getLatestLink() async => null; @override Future getLatestLinkString() async => null; @override Stream get uriLinkStream => _links.stream; @override Stream get stringLinkStream => _links.stream.map((uri) => uri.toString()); } /// Hands launched URLs to [onLaunch] instead of opening a browser. class FakeUrlLauncher(final void Function(Uri url) onLaunch) extends UrlLauncherPlatform { @override LinkDelegate? get linkDelegate => null; @override Future canLaunch(String url) async => true; @override Future launchUrl(String url, LaunchOptions options) async { onLaunch(.parse(url)); return true; } }