在flutter中处理链接并使用firebase动态链接导航
Posted
技术标签:
【中文标题】在flutter中处理链接并使用firebase动态链接导航【英文标题】:handle link and navigate with firebase dynamic links in flutter 【发布时间】:2020-06-10 16:02:39 【问题描述】:我在我的颤振项目应用程序中使用 firebase_dynamic_links 0.5.0。我正在使用 bloc 进行状态管理,但导航有问题。我正在正常处理链接,但是当我尝试导航到另一个不起作用的页面时。不知道为什么?
PS : 我已经测试了firebase_dynamic_links example 并且可以正常工作
main()
WidgetsFlutterBinding.ensureInitialized();
// Production code
ErrorWidget.builder = (FlutterErrorDetails details) => Container();
runApp(MyApp());
// Myapp 类在这里我得到打印的结果,但导航不起作用
class MyApp extends StatefulWidget
@override
_MyAppState createState() => _MyAppState();
class _MyAppState extends State<MyApp>
final _authBloc = AuthBloc();
final _progressBloc = new ProgressBloc();
@override
void initState()
super.initState();
initDynamicLinks();
void initDynamicLinks() async
final PendingDynamicLinkData data =
await FirebaseDynamicLinks.instance.getInitialLink();
final Uri deepLink = data?.link;
//print("hhhhhhh" + deepLink.path);
if (deepLink != null)
print("Link :" + deepLink.path);
// this line don't work
Navigator.pushNamed(context, '/helloworld');
FirebaseDynamicLinks.instance.onLink(
onSuccess: (PendingDynamicLinkData dynamicLink) async
final Uri deepLink = dynamicLink?.link;
if (deepLink != null)
print("Link :" + deepLink.path);
Navigator.pushNamed(context, '/helloworld');
, onError: (OnLinkErrorException e) async
print('onLinkError');
print(e.message);
);
@override
Widget build(BuildContext context)
ThemeData themeData = ThemeData(
fontFamily: Constants.DEFAULT_FONT_NAME,
textTheme: Theme.of(context)
.textTheme
.apply(fontFamily: Constants.DEFAULT_FONT_NAME),
brightness: Brightness.light,
canvasColor: Colors.black12,
scaffoldBackgroundColor: Colors.white,
primaryIconTheme:
Theme.of(context).primaryIconTheme.copyWith(color: Colors.white),
accentIconTheme:
Theme.of(context).accentIconTheme.copyWith(color: Colors.white),
primaryTextTheme:
Theme.of(context).primaryTextTheme.apply(bodyColor: Colors.white),
primaryColorLight: Colors.white,
primaryColorBrightness: Brightness.light,
primarySwatch: Constants.COLOR_PRIMARY,
primaryColor: Constants.COLOR_PRIMARY,
);
var home = Stack(children: <Widget>[
RootPage(),
ProgressDialog(),
]);
return ProgressProvider(
dialog: _progressBloc,
child: AuthBlocProvider(
bloc: _authBloc,
child: StoreBlocProvider(
store: Store(),
child: RootProvider(
bloc: new RootBloc(),
child: MaterialApp(
localizationsDelegates: [
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
],
supportedLocales: [
const Locale('en'), // English
const Locale('fr'), // Hebrew
],
title: 'Foodynasty',
theme: themeData,
debugShowCheckedModeBanner: false,
routes: <String, WidgetBuilder>
'/': (BuildContext context) => home,
'/helloworld': (BuildContext context) => RestaurantShare(
restaurantId: 'test',
),
,
),
),
),
),
);
谢谢你,对不起我的英语不好。
【问题讨论】:
【参考方案1】:可能是deepLink
为空,而if
语句中的代码未执行。您能否提供一个发送到您的应用的深层链接的示例?可能是firebase_dynamic_links
有错误时无法正确解析深层链接。
【讨论】:
以上是关于在flutter中处理链接并使用firebase动态链接导航的主要内容,如果未能解决你的问题,请参考以下文章
在 Flutter 中使用 Firebase 动态链接邀请链接到不同的组
Flutter - 如何在应用邀请功能的 Firebase 动态链接中传递自定义参数?
当用户点击 Flutter App 中的 Firebase 通知时如何打开链接?
在 Flutter 中的 TextFormField 中,用户输入一个 url 或网站链接以将其保存到 firebase 数据库,并且应该使用浏览器打开该链接