Глубокие ссылки во Flutter с помощью Uni Links: подробное руководство

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

Метод 1: использование StreamSubscription

import 'package:uni_links/uni_links.dart';
import 'package:flutter/services.dart';
void initUniLinks() async {
  StreamSubscription sub = uriLinkStream.listen((Uri uri) {
    // Handle the received deep link URI
    // e.g., extract data from the URI and navigate to the relevant screen
  }, onError: (err) {
    // Handle any errors that occur during deep link handling
  });
  // Cancel the subscription when no longer needed
  // sub.cancel();
}

Метод 2: использование getInitialLink

import 'package:uni_links/uni_links.dart';
import 'package:flutter/services.dart';
void checkInitialLink() async {
  try {
    String initialLink = await getInitialLink();
    if (initialLink != null) {
      // Handle the received deep link URI
      // e.g., extract data from the URI and navigate to the relevant screen
    }
  } on PlatformException {
    // Handle any errors that occur during deep link handling
  }
}

Метод 3: использование пользовательского виджета DeepLink

import 'package:uni_links/uni_links.dart';
import 'package:flutter/services.dart';
class DeepLinkWidget extends StatefulWidget {
  @override
  _DeepLinkWidgetState createState() => _DeepLinkWidgetState();
}
class _DeepLinkWidgetState extends State<DeepLinkWidget> {
  StreamSubscription sub;
  @override
  void initState() {
    super.initState();
    sub = uriLinkStream.listen((Uri uri) {
      // Handle the received deep link URI
      // e.g., extract data from the URI and navigate to the relevant screen
    }, onError: (err) {
      // Handle any errors that occur during deep link handling
    });
  }
  @override
  void dispose() {
    sub?.cancel();
    super.dispose();
  }
  @override
  Widget build(BuildContext context) {
    return Container();
  }
}

Метод 4. Использование DeepLinkHandler

import 'package:uni_links/uni_links.dart';
import 'package:flutter/services.dart';
class DeepLinkHandler {
  StreamSubscription sub;
  void init() {
    sub = uriLinkStream.listen((Uri uri) {
      // Handle the received deep link URI
      // e.g., extract data from the URI and navigate to the relevant screen
    }, onError: (err) {
      // Handle any errors that occur during deep link handling
    });
  }
  void dispose() {
    sub?.cancel();
  }
}

В этой статье мы рассмотрели несколько методов реализации диплинков во Flutter с использованием пакета Uni Links. Независимо от того, решите ли вы использовать StreamSubscription, getInitialLink, собственный DeepLinkWidget или DeepLinkHandler, Uni Links предоставляет гибкое и эффективное решение для обработки глубоких ссылок в ваших приложениях Flutter. Включив функцию глубоких ссылок, вы можете улучшить взаимодействие с пользователем и повысить вовлеченность в своем приложении.