Заполните форму при нажатии на ссылку - Флаттер - PullRequest
0 голосов
/ 30 апреля 2020

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

Например, если это мое приложение:

default screen

А потом я отправил эту ссылку по электронной почте: https://example.com/fillMyForm?username=johndoe

Тогда это откроет мое приложение и заполнит форму, примерно так:

filled form

Заранее спасибо.

1 Ответ

1 голос
/ 30 апреля 2020

Для этого вы можете использовать динамические ссылки Firebase c. Перейдите по этой ссылке https://medium.com/better-programming/deep-linking-in-flutter-with-firebase-dynamic-links-8a4b1981e1eb

Извлеките динамическую c ссылку в виде флаттера, как это, и откройте экран формы, когда ссылка попадет в регистр слушателя.

class MainWidgetState extends State<MainWidget> {

  @override
  void initState() {
    super.initState();
    this.initDynamicLinks();
  }

  initDynamicLinks(BuildContext context) async {
    await Future.delayed(Duration(seconds: 3));
    var data = await FirebaseDynamicLinks.instance.getInitialLink();
    var deepLink = data?.link;
    final queryParams = deepLink.queryParameters;
    if (queryParams.length > 0) {
      var userName = queryParams['userId'];
      openFormScreen(userName);
    }
    FirebaseDynamicLinks.instance.onLink(onSuccess: (dynamicLink)
    async {
      var deepLink = dynamicLink?.link;
      final queryParams = deepLink.queryParameters;
      if (queryParams.length > 0) {
        var userName = queryParams['userId'];
        openFormScreen(userName);
      }
      debugPrint('DynamicLinks onLink $deepLink');
    }, onError: (e) async {
      debugPrint('DynamicLinks onError $e');
    });
  }

  openFormScreen(String userName){
    Navigator.of(context).pushNamed("routeFormScreen", arguments: {"name": userName});
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...