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

后端 未结 2 582
滥情空心
滥情空心 2021-02-09 15:42

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.

相关标签:
2条回答
  • 2021-02-09 16:18

    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"),
          ),
        );
      }
    }
    
    0 讨论(0)
  • 2021-02-09 16:23

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

    0 讨论(0)
提交回复
热议问题