我确实在我的应用程序中使用 go_router 进行了深度链接处理的初步实现
我的问题:
如果我已经有一个只有几个屏幕的堆栈,并且我打开深层链接,它将清除我的堆栈并仅打开该屏幕。这意味着它会弹出所有以前的屏幕。
期望 - 在我的堆栈顶部打开一个深层链接,只需推送新路线。
有什么想法吗?
深层链接是否可以仅更新屏幕导航属性 - 就像回调一样?
如果我也可以像全局回调一样处理没有导航的深层链接也可以。
该功能是支付——发生在浏览器上。我需要将用户导航回到支付屏幕上之前所在的应用程序。
import 'package:flutter/material.dart';
import 'package:flutter_linkify/flutter_linkify.dart';
import 'package:url_launcher/url_launcher.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: MyHomePage(),
navigatorObservers: [
MyRouteObserver(),
],
);
}
}
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('My App'),
),
body: Center(
child: Linkify(
onOpen: (link) async {
// Check if the app is already running
if (MyRouteObserver.isAppRunning) {
// Navigate based on the deep link
MyRouteObserver().navigatorKey.currentState!.pushNamed(link.url!);
} else {
// Open the app and handle deep link in the initial route
runApp(MyApp());
MyRouteObserver().initialDeepLink = link.url;
}
},
text: 'Open deep link: https://example.com/deeplink',
),
),
);
}
}
class MyRouteObserver extends RouteObserver<PageRoute<dynamic>> {
static bool isAppRunning = false;
String? initialDeepLink;
final GlobalKey<Navigator