Как перейти на определенную страницу в моем приложении на основе ссылки Dynami c, которая привела пользователя - PullRequest
0 голосов
/ 05 февраля 2020

В моем приложении для электронной коммерции я хочу разрешить пользователям делиться продуктами со своими друзьями или в социальных сетях. когда щелкают по ссылке общего доступа, я хочу, чтобы пользователь сразу переходил на страницу сведений о продукте и добавлял в корзину, если он хочет купить продукт. Но в моем случае я всегда оказываюсь на главной странице.

Вот что я уже сделал, ребята, как мне указать путь, по которому ссылка должна перейти на

class ShareProvider with ChangeNotifier{  
void  createAndShare({
    @required dynamic imageUrl,
    @required String productCategory,
    @required String productDescription,
    @required int productId,
    @required String productName,
    @required int productPrice,
  }) async {
    final DynamicLinkParameters parameters = DynamicLinkParameters(
      uriPrefix: 'https://unishop.page.link',
      link: Uri.https('ushop.com','/',
          {
                    "imageUrl":imageUrl.toString(),
            "productCategory":productCategory,
            "productDescription":productDescription,
            "productId":productId.toString(),
            "productName": productName,
            "productPrice":productPrice.toString(),
      }),
      androidParameters: AndroidParameters(
        packageName: 'com.gh.ushop',
      ),
      iosParameters: IosParameters(
        bundleId: 'com.gh.ushop',
      ),
      socialMetaTagParameters: SocialMetaTagParameters(
        title: productName,
        description: productDescription,
//        imageUrl: ,
      ),
    );
    final ShortDynamicLink shortDynamicLink = await parameters.buildShortLink();
    final Uri shortUrl = shortDynamicLink.shortUrl;

    print(shortUrl);
    Share.share('$shortUrl');
  }

Future<void> retrieveDynamicLink() async {


  FirebaseDynamicLinks.instance.onLink(onSuccess: (data) async {
    final Uri deepLink = data?.link;

    print("DeepLink is: ${data?.link}");
    if (deepLink != null) {
      final queryParams = deepLink.queryParameters;
      if(queryParams.length > 0) {
        String productCategory,imageUrl,productDescription,productName;
        int productId,productPrice ;
        productCategory= queryParams["productCategory"];
        imageUrl=  queryParams["imageUrl"];
        productDescription=  queryParams["productDescription"];
        productName= queryParams["productName"];
        productId=  queryParams["productId"] as int;
        productPrice = queryParams["productPrice"] as int;
        print(productDescription);
        print(productName);
        print(productPrice);
        print(productCategory);
        print(imageUrl);
        print(productId);
        deepLink.toString();
        print(deepLink.toString());
      }
    }});
}
}

кнопка, чтобы поделиться

FlatButton(
  child: new Image.asset(
    "share",
    height: 20,
  ),
  onPressed: () {
    Provider.of<ShareProvider>(context, listen: false).createAndShare(
      imageUrl:  widget.product.url,
      productCategory:  widget.product.category,
      productDescription:  widget.product.description,
      productId:  widget.product.id,
      productName: widget.product.title,
      productPrice:  widget.product.price,



    );
  },
),

Должен ли я использовать код ниже ??? как мне это сделать тогда? Я, кажется, не понимаю, DeepLink.path часть кода

    if (deepLink != null) {
      Navigator.pushNamed(context, deepLink.path);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...