当前位置: 首页 > 知识库问答 >
问题:

在颤振联邦插件上调用特定的平台函数

狄新翰
2023-03-14

我想知道在联邦插件上实现平台特定功能的最佳方式是什么,以及如何从主应用程序调用它。

例如,让我们看看这个联邦插件代码:

  • 定义功能的平台接口:
abstract class FlutterGetPlatformStringPlatform extends PlatformInterface {
...
  Future<String> getPlatformString() {
    throw UnimplementedError();
  }
...
}
  • Android系统的实现:
abstract class AndroidGetPlatformString extends FlutterGetPlatformStringPlatform {
...
  @override
  Future<String> getPlatformString() {
    // Some native method
  }
...
}
  • Web实现:
abstract class WebGetPlatformString extends FlutterGetPlatformStringPlatform {
...
  @override
  Future<String> getPlatformString() {
    // Some native method
  }

  String specificNativeVariable = SpecificNativeVariable();
  
  void specificNativeFunction() {
    // More stuff
  }

...
}

所以这里的问题是在我的应用程序上,我在我的pubspec上导入插件。yaml然后在代码导入'包上:颤振_平台_字符串_接口/颤振_平台_字符串_接口。飞镖 。那么,我如何只能调用webspecificNativeFunction,或者如何才能只设置webSpecificNativeVariable

我应该导入flatter\u platform\u string\u web,还是必须实例化平台接口?


共有1个答案

哈雅珺
2023-03-14

有几种方法可以做到这一点:

  • 如您所示,插件客户端导入flutter_platform_string_web
  • 使用in_app_purchase插件中演示的模式,插件客户端导入flutter_platform_string_web。这样做的好处是客户端不需要导入整个平台实现,因此不太可能认为应该直接调用其他平台实现方法(这几乎总是一个坏主意)。
  • 将方法作为面向应用程序的包和文档的一部分,它只在Web上实现。这就是特定于平台的方法在创建联合插件之前的工作方式,但现在它并不是真正鼓励的做法。当您使用自己的特定方法添加更多平台时,它无法很好地扩展,不允许使用特定于平台的类型等。
 类似资料:
  • 在为Android实现平台特定的代码时,我遇到了以下错误。 [ERROR: flutter/lib/ui/ui_dart_state.cc(186)]未处理的异常:缺少插件异常(在通道plugins.flutter.io/path_provider上没有找到方法getTemporaryDirectory的实现)

  • 我不确定这是否是合适的堆栈交换站点,但我认为它比我能想到的其他站点更适合这里。无论如何,我为一个移动应用程序开发团队工作,我们正在考虑使用Flutter来开发我们未来的移动应用程序,因为它减少了为iOS和Android开发时所需的工作量(我们只是一个小团队)。 我通读了一些关于Flutter的信息,并检查了可用的软件包和Dart /Flutter Pub,还有一些软件包尚未可用于我们用于Andro

  • 我想建立库伯尼特斯联盟。当我运行以下命令时,我得到一个错误: 正在为联合系统组件创建命名空间联合系统。。。服务器错误(禁止):名称空间被禁止:用户“客户端”无法在群集作用域中创建名称空间:未知用户“客户端”。 kubefed和kubectl的版本为1.8.8:

  • 我有一些依赖于项目,我有一些依赖于

  • 凭据对话框(Google表单)已成功打开,但在我填写凭据后,出现了此错误。我按照此处的说明进行了操作。创建了一个Firebase项目,从Google API控制台启用了Google Drive API(这就是我现在需要的)。 引发异常的代码: 这是堆栈跟踪: google_sign_in插件的版本是4.0.0。 这是颤振多克托 -v 的输出: 任何帮助将不胜感激。谢谢!