我在我新创建的 Flutter-plugin 项目上成功运行了一个 Flutter 插件。并且无论是 iOS 还是 Android,都能够成功运行这个 Flutter 插件的 example/lib/main.dart 示例代码。
但是,一旦我尝试在另一个 Flutter 项目中使用该插件,事情就会崩溃。
到目前为止,我已经尝试了两种方法来将我自己编写的插件集成到另一个 Flutter 项目中:
在我的 Flutter 项目(我尝试使用里面的插件的那个)中,我转到pubspec.yaml文件并写下:
我试过......本地路径集成:
dependencies:
flutter:
sdk: flutter
my_plugin_name:
path: ../../../Flutter_plugins/my_plugin_name/
Run Code Online (Sandbox Code Playgroud)
或者我尝试过...远程集成:
dependencies:
flutter:
sdk: flutter
my_plugin_name:
git:
url: https://github.com/XXXX/my_plugin_name.git
Run Code Online (Sandbox Code Playgroud)
两种集成都运行良好,而且 VSCode 似乎正确导入了插件!
但这就是事情崩溃的地方!!只要我添加任何内容到dependencies,那就是当事情CRASH之后。
为了测试它是否有效,我打开我的 Flutter 项目并转到 lib/main.dart:
在我想将插件集成到的项目的 lib/main.dart 中,我编写的内容与在插件项目的 plugin-example 文件夹中编写的内容几乎相同(请参阅下面的代码)。
或者换句话说,我尝试运行与 plugin-example 文件夹提供的完全相同的代码,但这次是在我导入了插件的另一个 Flutter 项目中。
因此,我将示例代码粘贴到我的 Flutter 项目的 lib/main.dart 文件中。
在 main.dart 中,我添加了以下导入:
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:flutter/services.dart';
import 'package:my_plugin_name/my_plugin_name.dart';
Run Code Online (Sandbox Code Playgroud)
. 并将代码粘贴到 main.dart 中: …
import android.content.Context;\nimport android.view.View;\nimport android.widget.EditText;\nimport io.flutter.plugin.common.MethodCall; \nimport io.flutter.plugin.common.MethodChannel;\nimport static io.flutter.plugin.common.MethodChannel.Result;\nimport io.flutter.plugin.common.BinaryMessenger;\nimport io.flutter.plugin.platform.PlatformView;\n\npublic class FlutterTextView implements PlatformView, MethodChannel.MethodCallHandler {\n private final EditText textView;\n private final MethodChannel methodChannel;\n\n FlutterTextView(Context context, BinaryMessenger messenger, int id) {\n textView = new EditText(context);\n methodChannel = new MethodChannel(messenger, "plugins.cjs.test/textview_" + id);\n methodChannel.setMethodCallHandler(this);\n }\n\n @Override\n public View getView() {\n return textView;\n }\n\n @Override\n public void onMethodCall(MethodCall methodCall, MethodChannel.Result result) {\n switch (methodCall.method) {\n case "setText":\n setText(methodCall, result);\n break;\n default:\n result.notImplemented();\n }\n\n }\n\n private void setText(MethodCall methodCall, Result result) {\n …Run Code Online (Sandbox Code Playgroud) 我删除了我的文件夹 .pub-cache/hosted/pub.dartlang.org/this_plugin
更新内部依赖项的命令是什么pubsec.yaml? 我相信是
颤振包得到
下的文件夹.pub-cache仍不是最新的。
注意:pubspec.lock我删除了一个
我开发了一个 Web 应用程序,它使用 WebAuthn API 来使用硬件安全密钥进行身份验证。效果很好。
我正在尝试使用 Flutter 原生实现它,并兼容 IOS 和 Android。这些平台有任何库或起点吗?我不想使用 ChromeTabs 或 SFSafariViewController。
请指教。
我一直在寻找特定问题的软件包或任何方法,我用谷歌搜索但没有找到任何解决方案,所以我的问题是,我想要像tictock应用程序这样的功能,用户可以选择任何音乐音频,他们可以根据该用户可以执行操作,同步音频和视频,我希望将文件输出为视频。我怎样才能实现这一点,有没有任何方法或任何包在颤振中可用。我已经选择了音频和视频录制功能,但我仍然坚持合并两者,如果 FFmpeg 包我们可以使用方法,如何使用该包..请解释一下。
对于我的 Flutter 应用程序,我想为自己编写一个小插件,它在 Android 中原生使用相机。
我正在阅读文档,并且对 Flutter 和 Native 与 MethodChannels 之间的“粘合剂”有了基本的了解。但有一件事我不明白:
如果我的插件的本机类正在实现 FlutterPlugin 和 ActivityAware,或者如果我直接使用扩展 FlutterActivity 并连接到 Flutter 引擎的 Activity,那么到底有什么区别?
我们创建了一个 Flutter 插件,其中 iOS 代码是用 Swift 编写的 -
import UIKit
import CooeeSDK
public class SwiftCooeePlugin: NSObject, FlutterPlugin {
var sdkInstance = RegisterUser.shared
static public func register(with registrar: FlutterPluginRegistrar) {
let channel = FlutterMethodChannel(name: "cooee_plugin", binaryMessenger: registrar.messenger())
let instance = SwiftCooeePlugin()
registrar.addMethodCallDelegate(instance, channel: channel)
}
public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) {
if call.method == "getUDID"{
print(">>>getUDID 1")
let UDID = RegisterUser.shared.fetchUDID() ?? ""
result(UDID)
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我们在 Flutter 应用程序中安装此插件并CooeePlugin.getUDID()在 dart 文件中调用时,不会调用上述方法。奇怪的是,甚至没有记录任何错误。
任何想法?
经过一个小时的调试,我们复制了相同的代码channel.setMethodCallHandler并且它起作用了- …
我正在构建一个 Flutter 应用程序,当设备连接到另一个蓝牙设备时,该应用程序能够执行一些操作。这个应用程序应该可以在 Android 和 iOS 上运行,但为了简单起见,我在这篇文章中将重点关注 Android。此外,无论应用程序是在前台、后台还是被杀死,这都必须有效。
以下是该应用程序的架构:
BroadcastReceiver.BroadcastReceiver被蓝牙事件触发时,信息会发送到 Flutter 代码(即使应用程序处于后台或被杀死)。创建 Flutter 隔离来处理 Flutter 代码。一切都运转良好。Flutter 代码被调用,我可以用来print(data)记录 Android 代码提供的数据。
当我想从隔离中调用任何 Flutter 插件(如sqflite、package_info_plus、 ...)时,事情变得更加棘手。我每次都会收到此错误:
[错误:flutter/lib/ui/ui_dart_state.cc(199)] 未处理的异常:MissingPluginException(在通道 yyy 上找不到方法 xxx 的实现)
据我了解,生成的隔离无法本机运行 Flutter 插件。有一些帖子(无法理解“找不到‘Window_sendPlatformMessage’(4 个参数)”错误的 Flutter Isolate 解决方法,https://github.com/flutter/flutter/issues/13937)解释了如何创建可以使用解决方法或https://pub.dev/packages/flutter_isolate等插件运行 Flutter 插件。但是,我无法使用此包创建隔离,因为隔离是从 Android 代码创建的。
你们中的一个人能告诉我如何实现这一目标吗?有没有办法从本机代码创建的隔离中使用 Flutter 插件?
预先非常感谢
我正在尝试开发一个联合插件,它将包装一个本机 SDK(适用于 android 和 ios),如此处所述,并且还查看了此处显示的示例和url_launcher 插件示例,但尽管如此,我还是无法弄清楚一些事情。 。
文档中没有示例如何创建平台接口包 以及如何在插件的所有平台中使用它(示例文章和 url_launcher 显示了 Web 插件,但示例项目的 ios 和 android 均未使用平台接口包)并且这些示例似乎很旧并且没有更新。
此外,他们还解释说,平台包应该引用pubspec.yaml 中的平台接口包,其实现定义如下:
flutter:
plugin:
implements: hello //this refers to the platform interface package
platforms:
windows:
pluginClass: HelloPlugin
Run Code Online (Sandbox Code Playgroud)
但我找不到任何关于此的示例,以及它如何实现的帮助以及平台插件如何使用平台接口包,如文档中所述
关于这个主题有什么好的和更新的示例或教程吗?
我正在开发几个用于流式传输和录制视频的插件。在 Android 领域,通常不可能让两个东西同时访问相机。
显而易见的解决方案是将两个插件合并为一个编组/共享资源的插件。
这让我思考。有没有办法在插件之间共享本机对象?我找不到这方面的任何文档或资源。
有人对如何实现这一目标有建议吗?