Flutter - 无法在flutter web中使用动态链接

Posted

技术标签:

【中文标题】Flutter - 无法在flutter web中使用动态链接【英文标题】:Flutter - Unable to use dynamic links in flutter web 【发布时间】:2021-08-15 00:59:42 【问题描述】:

我无法在 Flutter Web 上使用 Firebase 动态链接插件。

当我试图创建一个深层链接时,它给出了错误:

Error: MissingPluginException(No implementation found for method DynamicLinkParameters#buildShortLink on channel plugins.flutter.io/firebase_dynamic_links)
    at Object.throw_ [as throw] (http://localhost:49242/dart_sdk.js:5344:11)
    at MethodChannel._invokeMethod (http://localhost:49242/packages/flutter/src/services/system_channels.dart.lib.js:962:21)
    at _invokeMethod.next (<anonymous>)
    at http://localhost:49242/dart_sdk.js:39201:33
    at _RootZone.runUnary (http://localhost:49242/dart_sdk.js:39058:58)
    at _FutureListener.thenAwait.handleValue (http://localhost:49242/dart_sdk.js:34044:29)
    at handleValueCallback (http://localhost:49242/dart_sdk.js:34604:49)
    at Function._propagateToListeners (http://localhost:49242/dart_sdk.js:34642:17)
    at _Future.new.[_completeWithValue] (http://localhost:49242/dart_sdk.js:34484:23)
    at async._AsyncCallbackEntry.new.callback (http://localhost:49242/dart_sdk.js:34507:35)
    at Object._microtaskLoop (http://localhost:49242/dart_sdk.js:39345:13)
    at _startMicrotaskLoop (http://localhost:49242/dart_sdk.js:39351:13)
    at http://localhost:49242/dart_sdk.js:34858:9

在初始化状态下尝试处理动态链接时也会出现类似的类型错误。

如何解决这个问题?我至少需要在我的 Flutter Web 项目中创建一个动态链接。

【问题讨论】:

【参考方案1】:

您可以使用此guide 对 Dynamiclinks API 的发布请求构建动态链接,如下所示:

    Future<String>? buildDynamicLinks(
      theID, theTitle, theDescription, companyName, theCategory) async 
    var  urlToReturn;
    final String postUrl =
        'https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key=*****YourApiKey******';

    String theUrl =
        "https://sample.page.link/?isi=3223&ibi=app.sample.example&imv=1.0.1&link=https%3A%2F%2Fwww.yourWebsite.net%2F$theCategory ?? 'id'%2F$theID&si=**imgUrl**&sd=$companyName  -  $theDescription&amv=1&st=$theTitle&apn=app.example.sample";

    await http.post(Uri.tryParse(postUrl)!, body: 
      'longDynamicLink': theUrl,
    ).then(
      (http.Response response) 
        final int statusCode = response.statusCode;

        if (statusCode < 200 || statusCode > 400 || response == null) 
          throw new Exception("Error while fetching data");
        
        var decoded = json.decode(response.body);
        urlToReturn = decoded['shortLink'];
        return decoded['shortLink'];
      ,
    ).catchError((e) => debugPrint('error $e'));
    return urlToReturn;
  

【讨论】:

【参考方案2】:

目前 web 平台不支持firebase_dynamic_links 插件。

显示的错误信息MissingPluginException(No implementation found for method DynamicLinkParameters...)表示。

pub.dev 中可用的所有软件包都有一些tags,表示支持的平台。

【讨论】:

以上是关于Flutter - 无法在flutter web中使用动态链接的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Flutter Web 视图中使用本地存储

无法在 Flutter Web 中使用 MediaQuery

无法分别构建 Flutter Web 和 Flutter Mobile 应用

flutter项目中添加web支持

Flutter web 无法使用移动项目中的包

无法从 Flutter Web 读取 .txt 文件