Как использовать динамические ссылки Flutter Firebase с go_router
я имел
firebase
dynamic links
интегрирован и отлично работает в моем приложении, а позже я перешел на использование, и теперь я не знаю, что мне делать, чтобы заставить его работать или как с этим справиться.
Я представлял себе, что динамическая ссылка FB будет такой же, как
path
на страницу в
GoRouter
routes
, и go_router будет
redirect
на страницу автоматически, но я не думаю, что это так работает, и я не могу найти никаких ресурсов для этого.
Так что вопрос в том, как использовать
Firebase DynamicLinks
с
go_router
?
1 ответ
вот как я это сделал, вроде работает нормально :)
Когда приложение находится в остановленном режиме:
Будущее main() async { ...
// Closed state: getInitialLink is Used final PendingDynamicLinkData? initialLink = await FirebaseDynamicLinks.instance.getInitialLink();
...
затем через runApp(MtApp(initialRoute: initialLink)) передайте его в поле GoRouter.initialLocation или функцию GoRouter.redirect, в зависимости от того, как вы его используете.
- Когда приложение находится в фоновом режиме:
оберните свой верхний виджет созданным вами statefulWidget, например:
класс AHDynamicLinksManager расширяется
StatefulWidget {
final Widget child;
const AHDynamicLinksManager({required this.child, Key? key})
: super(key: key);
@override
State<AHDynamicLinksManager> createState() => _AHDynamicLinksManagerState();
}
class _AHDynamicLinksManagerState extends State<AHDynamicLinksManager> {
@override
void initState() {
super.initState();
FirebaseDynamicLinks.instance.onLink.listen((dynamicLinkData) {
String goingTo = dynamicLinkData.link.path;
GoRouter.of(context).go(goingTo);
}).onError((error) {
GoRouter.of(context).go("/errorpage/$error");
});
}
@override
Widget build(BuildContext context) {
return widget.child;
}
}
Надеюсь, это помогло!