使用动态链接的最佳方法是
import 'package:firebase_dynamic_links/firebase_dynamic_links.dart';import 'package:flutter/material.dart';class TestPage extends StatefulWidget { @override _TestPageState createState() => _TestPageState();}class _TestPageState extends State<TestPage> { @override void initState() { super.initState(); fetchlinkData(); } void fetchlinkData() async { // FirebaseDynamiclinks.getInitiallink does a call to firebase to get us the real link because we have shortened it. var link = await FirebaseDynamiclinks.instance.getInitiallink(); // This link may exist if the app was opened fresh so we'll want to handle it the same way onlink will. handlelinkData(link); // This will handle incoming links if the application is already opened FirebaseDynamiclinks.instance.onlink(onSuccess: (PendingDynamiclinkData dynamiclink) async { handlelinkData(dynamiclink); }); } void handlelinkData(PendingDynamiclinkData data) { final Uri uri = data?.link; if(uri != null) { final queryParams = uri.queryParameters; if(queryParams.length > 0) { String userName = queryParams["username"]; // verify the username is parsed correctly print("My users username is: $userName"); } } } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text("Sample"), ), body: Center( child: Text("Test"), ), floatingActionButton: FloatingActionButton( onPressed: () async { var dynamiclink = await createDynamiclink(userName: "Test"); // dynamiclink has been generated. share it with others to use it accordingly. print("Dynamic link: $dynamiclink"); }, child: Icon( Icons.add, color: Colors.white, ), ), ); } Future<Uri> createDynamiclink({@required String userName}) async { final DynamiclinkParameters parameters = DynamiclinkParameters( // This should match firebase but without the username query param uriPrefix: 'https://test.page.link', // This can be whatever you want for the uri, https://yourapp.com/groupinvite?username=$userName link: Uri.parse('https://test.page.link/groupinvite?username=$userName'), androidParameters: AndroidParameters( packageName: 'com.test.demo', minimumVersion: 1, ), iosParameters: IosParameters( bundleId: 'com.test.demo', minimumVersion: '1', appStoreId: '', ), ); final link = await parameters.buildUrl(); final ShortDynamiclink shortenedlink = await DynamiclinkParameters.shortenUrl( link, DynamiclinkParametersOptions(shortDynamiclinkPathLength: ShortDynamiclinkPathLength.unguessable), ); return shortenedlink.shortUrl; }}你完成了。



