Flutter.io - Is it possible to deep link to Android and iOS in Flutter?
You can use platform channel for this. It shouldn't be tough. You need to add handlers in native code and redirect urls via channels to flutter code. Example for iOS:
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[GeneratedPluginRegistrant registerWithRegistry:self];
FlutterViewController *controller = (FlutterViewController*)self.window.rootViewController;
self.urlChannel = [FlutterMethodChannel methodChannelWithName:@"com.myproject/url" binaryMessenger:controller];
return [super application:application didFinishLaunchingWithOptions:launchOptions];
}
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options{
[self.urlChannel invokeMethod:@"openURL"
arguments:@{@"url" : url.absoluteString}];
return true;
}
@end
And basic flutter code:
class _MyHomePageState extends State<MyHomePage> {
final MethodChannel channel = const MethodChannel("com.myproject/url");
String _url;
@override
initState() {
super.initState();
channel.setMethodCallHandler((MethodCall call) async {
debugPrint("setMethodCallHandler call = $call");
if (call.method == "openURL") {
setState(() => _url = call.arguments["url"]);
}
});
}
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text(_url ?? "No URL"),
),
);
}
}