Support setting bypassDomain Update flutter version Fix android service issues Fix macos dock exit button issues Add route address setting Optimize provider view
48 lines
1.0 KiB
Dart
48 lines
1.0 KiB
Dart
import 'dart:async';
|
|
|
|
import 'package:app_links/app_links.dart';
|
|
import 'package:flutter/material.dart';
|
|
|
|
typedef InstallConfigCallBack = void Function(String url);
|
|
|
|
class LinkManager {
|
|
static LinkManager? _instance;
|
|
late AppLinks _appLinks;
|
|
StreamSubscription? subscription;
|
|
|
|
LinkManager._internal() {
|
|
_appLinks = AppLinks();
|
|
}
|
|
|
|
initAppLinksListen(installConfigCallBack) async {
|
|
debugPrint("initAppLinksListen");
|
|
destroy();
|
|
subscription = _appLinks.uriLinkStream.listen(
|
|
(uri) {
|
|
debugPrint('onAppLink: $uri');
|
|
if (uri.host == 'install-config') {
|
|
final parameters = uri.queryParameters;
|
|
final url = parameters['url'];
|
|
if (url != null) {
|
|
installConfigCallBack(url);
|
|
}
|
|
}
|
|
},
|
|
);
|
|
}
|
|
|
|
destroy() {
|
|
if (subscription != null) {
|
|
subscription?.cancel();
|
|
subscription = null;
|
|
}
|
|
}
|
|
|
|
factory LinkManager() {
|
|
_instance ??= LinkManager._internal();
|
|
return _instance!;
|
|
}
|
|
}
|
|
|
|
final linkManager = LinkManager();
|