flutter dynamic link navigation fails when app is running and link is already used

Viewed 410

i am using flutter dynamic links, the naviation works fine if the app is closed. but when the app is opened and dynamic link is already used, in that case the navigation fails.

here is my code

loadingscreen.dart

Future<void> initDynamicLinks() async {
    print("initDynamicLinks");
    //when app is in background
    FirebaseDynamicLinks.instance.onLink(
        onSuccess: (PendingDynamicLinkData? dynamicLink) async {
      final Uri? deepLink = dynamicLink?.link;

      if (deepLink != null) {
        // ignore: unawaited_futures
  
        _handleDynamicLink(deepLink);
      } else {
        _navigateToHomePage();
      }
    }, onError: (OnLinkErrorException e) async {
      print('onLinkError');
      print(e.message);
    });
    // app in forground
    final PendingDynamicLinkData? data =
        await FirebaseDynamicLinks.instance.getInitialLink();
    final Uri? deepLink = data?.link;

    if (deepLink != null) {
      // ignore: unawaited_futures
      _handleDynamicLink(deepLink);
    } else {
      _navigateToHomePage();
    }
  }

  _navigateToHomePage() {
    Navigator.pushReplacement(
      context,
      MaterialPageRoute(
        builder: (context) => HomeScreen(
          deepLinkId: 0,
        ),
      ),
    );
  }

  _handleDynamicLink(Uri url) {
    String? storyId = url.queryParameters['storyId'];
    int deepLinkId = int.parse('$storyId');
    Navigator.pushReplacement(
      context,
      MaterialPageRoute(
        builder: (context) => HomeScreen(
          deepLinkId: deepLinkId,
        ),
      ),
    );
  }

the context is not available? is that the reason? can someone guide here?

0 Answers
Related