uni links

This commit is contained in:
niuhuan 2022-07-01 00:31:15 +08:00
parent 421db2522b
commit a246a3d423
12 changed files with 80 additions and 74 deletions

View File

@ -1,6 +1,4 @@
PODS:
- app_links (0.0.1):
- Flutter
- DKImagePickerController/Core (4.3.2):
- DKImagePickerController/ImageDataManager
- DKImagePickerController/Resource
@ -48,18 +46,20 @@ PODS:
- SDWebImage/Core (5.12.5)
- SwiftyGif (5.4.3)
- TOCropViewController (2.6.1)
- uni_links (0.0.1):
- Flutter
- uri_to_file (0.0.1):
- Flutter
- url_launcher_ios (0.0.1):
- Flutter
DEPENDENCIES:
- app_links (from `.symlinks/plugins/app_links/ios`)
- file_picker (from `.symlinks/plugins/file_picker/ios`)
- Flutter (from `Flutter`)
- image_cropper (from `.symlinks/plugins/image_cropper/ios`)
- image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`)
- permission_handler (from `.symlinks/plugins/permission_handler/ios`)
- uni_links (from `.symlinks/plugins/uni_links/ios`)
- uri_to_file (from `.symlinks/plugins/uri_to_file/ios`)
- url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`)
@ -72,8 +72,6 @@ SPEC REPOS:
- TOCropViewController
EXTERNAL SOURCES:
app_links:
:path: ".symlinks/plugins/app_links/ios"
file_picker:
:path: ".symlinks/plugins/file_picker/ios"
Flutter:
@ -84,13 +82,14 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/image_picker_ios/ios"
permission_handler:
:path: ".symlinks/plugins/permission_handler/ios"
uni_links:
:path: ".symlinks/plugins/uni_links/ios"
uri_to_file:
:path: ".symlinks/plugins/uri_to_file/ios"
url_launcher_ios:
:path: ".symlinks/plugins/url_launcher_ios/ios"
SPEC CHECKSUMS:
app_links: 8941e7bac086136bae70d619141c36f258f4381d
DKImagePickerController: b5eb7f7a388e4643264105d648d01f727110fc3d
DKPhotoGallery: fdfad5125a9fdda9cc57df834d49df790dbb4179
file_picker: 817ab1d8cd2da9d2da412a417162deee3500fc95
@ -101,6 +100,7 @@ SPEC CHECKSUMS:
SDWebImage: 0905f1b7760fc8ac4198cae0036600d67478751e
SwiftyGif: 6c3eafd0ce693cad58bb63d2b2fb9bacb8552780
TOCropViewController: edfd4f25713d56905ad1e0b9f5be3fbe0f59c863
uni_links: d97da20c7701486ba192624d99bffaaffcfc298a
uri_to_file: c4726881848febf4806f0a5707bd12903e02b0f0
url_launcher_ios: 839c58cdb4279282219f5e248c3321761ff3c4de

View File

@ -17,9 +17,36 @@
<string>Owner</string>
<key>LSItemContentTypes</key>
<array>
<string>niuhuan.pkz</string>
<string>pkz</string>
</array>
</dict>
</array>
<key>UTExportedTypeDeclarations</key>
<array>
<dict>
<key>UTTypeIdentifier</key>
<string>niuhuan.pkz</string>
<key>UTTypeConformsTo</key>
<array>
<string>public.data</string>
<string>public.content</string>
<string>com.apple.package</string>
</array>
<key>UTTypeDescription</key>
<string>PKZ Archive</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>pkz</string>
</array>
<key>public.mime-type</key>
<array>
<string>text/vnd.niuhuan.pkz</string>
</array>
</dict>
</dict>
</array>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>

View File

@ -1,7 +1,6 @@
import 'dart:async';
import 'dart:io';
import 'package:app_links/app_links.dart';
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
import 'package:pikapika/basic/Common.dart';
@ -11,6 +10,7 @@ import 'package:pikapika/basic/enum/ErrorTypes.dart';
import 'package:pikapika/screens/RegisterScreen.dart';
import 'package:pikapika/screens/SettingsScreen.dart';
import 'package:pikapika/screens/components/NetworkSetting.dart';
import 'package:uni_links/uni_links.dart';
import 'package:uri_to_file/uri_to_file.dart';
import '../basic/Navigator.dart';
@ -32,13 +32,13 @@ class _AccountScreenState extends State<AccountScreen> {
late bool _logging = false;
late String _username = "";
late String _password = "";
late StreamSubscription<Uri> _linkSubscription;
late StreamSubscription<String?> _linkSubscription;
@override
void initState() {
final appLinks = AppLinks();
// todo cancel , APP关闭时销毁, APP里
_linkSubscription = appLinks.uriLinkStream.listen((uri) async {
_linkSubscription = linkStream.listen((uri) async {
if (uri == null) return;
RegExp regExp = RegExp(r"^.*\.pkz$");
final matches = regExp.allMatches(uri.toString());
if (matches.isNotEmpty) {

View File

@ -1,10 +1,10 @@
import 'dart:async';
import 'dart:io';
import 'package:app_links/app_links.dart';
import 'package:flutter/material.dart';
import 'package:pikapika/basic/config/Version.dart';
import 'package:pikapika/screens/components/Badge.dart';
import 'package:uni_links/uni_links.dart';
import 'package:uri_to_file/uri_to_file.dart';
import 'CategoriesScreen.dart';
@ -20,18 +20,18 @@ class AppScreen extends StatefulWidget {
}
class _AppScreenState extends State<AppScreen> {
late StreamSubscription<Uri> _linkSubscription;
late StreamSubscription<String?> _linkSubscription;
@override
void initState() {
versionEvent.subscribe(_onVersion);
final appLinks = AppLinks();
// todo cancel , APP关闭时销毁, APP里
_linkSubscription = appLinks.uriLinkStream.listen((uri) async {
_linkSubscription = linkStream.listen((uri) async {
if (uri == null) return;
RegExp regExp = RegExp(r"^.*\.pkz$");
final matches = regExp.allMatches(uri.toString());
final matches = regExp.allMatches(uri);
if (matches.isNotEmpty) {
File file = await toFile(uri.toString());
File file = await toFile(uri);
Navigator.of(context).push(MaterialPageRoute(
builder: (BuildContext context) =>
PkzArchiveScreen(pkzPath: file.path),

View File

@ -34,7 +34,7 @@ import 'package:pikapika/basic/config/Version.dart';
import 'package:pikapika/basic/config/VolumeController.dart';
import 'package:pikapika/basic/config/ShadowCategoriesMode.dart';
import 'package:pikapika/screens/PkzArchiveScreen.dart';
import 'package:app_links/app_links.dart';
import 'package:uni_links/uni_links.dart';
import 'package:uri_to_file/uri_to_file.dart';
import '../basic/config/ExportRename.dart';
import 'AccountScreen.dart';
@ -94,11 +94,10 @@ class _InitScreenState extends State<InitScreen> {
await initAuthentication();
autoCheckNewVersion();
final appLinks = AppLinks();
String? initUrl;
if (Platform.isAndroid || Platform.isIOS) {
try {
initUrl = (await appLinks.getInitialAppLink())?.toString();
initUrl = (await getInitialUri())?.toString();
// Use the uri and warn the user, if it is not correct,
// but keep in mind it could be `null`.
} on FormatException {

View File

@ -1,7 +1,6 @@
import 'dart:async';
import 'dart:io';
import 'package:app_links/app_links.dart';
import 'package:flutter/material.dart';
import 'package:path/path.dart' as p;
import 'package:permission_handler/permission_handler.dart';
@ -9,6 +8,7 @@ import 'package:pikapika/basic/Entities.dart';
import 'package:pikapika/basic/Method.dart';
import 'package:pikapika/screens/components/ContentBuilder.dart';
import 'package:pikapika/screens/components/PkzComicInfoCard.dart';
import 'package:uni_links/uni_links.dart';
import 'package:uri_to_file/uri_to_file.dart';
import '../basic/Navigator.dart';
@ -33,18 +33,18 @@ class _PkzArchiveScreenState extends State<PkzArchiveScreen> with RouteAware {
late String _fileName;
late Future _future;
late PkzArchive _info;
StreamSubscription<Uri>? _linkSubscription;
StreamSubscription<String?>? _linkSubscription;
@override
void initState() {
if (widget.holdPkz) {
final appLinks = AppLinks();
// todo cancel , APP关闭时销毁, APP里
_linkSubscription = appLinks.uriLinkStream.listen((uri) async {
_linkSubscription = linkStream.listen((uri) async {
if(uri == null) return;
RegExp regExp = RegExp(r"^.*\.pkz$");
final matches = regExp.allMatches(uri.toString());
final matches = regExp.allMatches(uri);
if (matches.isNotEmpty) {
File file = await toFile(uri.toString());
File file = await toFile(uri);
Navigator.of(context).push(
MaterialPageRoute(
builder: (BuildContext context) =>
@ -95,7 +95,7 @@ class _PkzArchiveScreenState extends State<PkzArchiveScreen> with RouteAware {
builder: (BuildContext context) => PkzComicInfoScreen(
pkzPath: widget.pkzPath,
pkzComic: _info.comics.first,
holdPkz: true,
holdPkz: widget.holdPkz,
),
));
}

View File

@ -1,12 +1,12 @@
import 'dart:async';
import 'dart:io';
import 'package:app_links/app_links.dart';
import 'package:flutter/material.dart';
import 'package:path/path.dart' as p;
import 'package:pikapika/basic/Entities.dart';
import 'package:pikapika/basic/Method.dart';
import 'package:pikapika/screens/PkzReaderScreen.dart';
import 'package:uni_links/uni_links.dart';
import 'package:uri_to_file/uri_to_file.dart';
import '../basic/Navigator.dart';
@ -32,18 +32,18 @@ class PkzComicInfoScreen extends StatefulWidget {
class _PkzComicInfoScreenState extends State<PkzComicInfoScreen>
with RouteAware {
PkzComicViewLog? _log;
StreamSubscription<Uri>? _linkSubscription;
StreamSubscription<String?>? _linkSubscription;
@override
void initState() {
if (widget.holdPkz) {
final appLinks = AppLinks();
// todo cancel , APP关闭时销毁, APP里
_linkSubscription = appLinks.uriLinkStream.listen((uri) async {
_linkSubscription = linkStream.listen((uri) async {
if (uri == null) return;
RegExp regExp = RegExp(r"^.*\.pkz$");
final matches = regExp.allMatches(uri.toString());
final matches = regExp.allMatches(uri);
if (matches.isNotEmpty) {
File file = await toFile(uri.toString());
File file = await toFile(uri);
Navigator.of(context).push(MaterialPageRoute(
builder: (BuildContext context) =>
PkzArchiveScreen(pkzPath: file.path),

View File

@ -5,10 +5,8 @@
import FlutterMacOS
import Foundation
import app_links_macos
import url_launcher_macos
func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
AppLinksMacosPlugin.register(with: registry.registrar(forPlugin: "AppLinksMacosPlugin"))
UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin"))
}

View File

@ -8,41 +8,6 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.1+2"
app_links:
dependency: "direct main"
description:
name: app_links
url: "https://pub.dartlang.org"
source: hosted
version: "3.2.0"
app_links_macos:
dependency: transitive
description:
name: app_links_macos
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.0"
app_links_platform_interface:
dependency: transitive
description:
name: app_links_platform_interface
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.2"
app_links_web:
dependency: transitive
description:
name: app_links_web
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.0"
app_links_windows:
dependency: transitive
description:
name: app_links_windows
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.0"
archive:
dependency: transitive
description:
@ -467,6 +432,27 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "1.3.1"
uni_links:
dependency: "direct main"
description:
name: uni_links
url: "https://pub.dartlang.org"
source: hosted
version: "0.5.1"
uni_links_platform_interface:
dependency: transitive
description:
name: uni_links_platform_interface
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.0"
uni_links_web:
dependency: transitive
description:
name: uni_links_web
url: "https://pub.dartlang.org"
source: hosted
version: "0.1.0"
uri_to_file:
dependency: "direct main"
description:

View File

@ -48,8 +48,8 @@ dependencies:
crop_image: ^1.0.2
image: ^3.1.3
path: ^1.8.0
app_links: ^3.2.0
uri_to_file: ^0.2.0
uni_links: ^0.5.1
dev_dependencies:
flutter_test:

View File

@ -6,12 +6,9 @@
#include "generated_plugin_registrant.h"
#include <app_links_windows/app_links_windows_plugin.h>
#include <url_launcher_windows/url_launcher_windows.h>
void RegisterPlugins(flutter::PluginRegistry* registry) {
AppLinksWindowsPluginRegisterWithRegistrar(
registry->GetRegistrarForPlugin("AppLinksWindowsPlugin"));
UrlLauncherWindowsRegisterWithRegistrar(
registry->GetRegistrarForPlugin("UrlLauncherWindows"));
}

View File

@ -3,7 +3,6 @@
#
list(APPEND FLUTTER_PLUGIN_LIST
app_links_windows
url_launcher_windows
)