Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Flutter.io - Is it possible to deep link to Android and iOS in Flutter?

Tags:

If it's possible, is it an easy implementation or a tough one?

I had difficulty getting a clear idea in Flutter.io's documentation.

like image 466
Deborah Avatar asked Jul 27 '17 21:07

Deborah


2 Answers

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"),
      ),
    );
  }
}
like image 61
German Saprykin Avatar answered Oct 11 '22 14:10

German Saprykin


For anyone need updated solution: you can use Google Dynamic Links for Firebase and another guideline on Medium

like image 28
Thuong Avatar answered Oct 11 '22 13:10

Thuong