Глубокие ссылки — важнейшая функция при разработке мобильных приложений, позволяющая пользователям напрямую переходить к определенному контенту в приложении. В контексте 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. Включив функцию глубоких ссылок, вы можете улучшить взаимодействие с пользователем и повысить вовлеченность в своем приложении.