标签: flutter-plugin

如何创建可以在另一个 Flutter 项目中使用的 Flutter 插件?

我在我新创建的 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 中: …

plugins dart flutter-dependencies flutter-plugin

6
推荐指数
1
解决办法
5286
查看次数

在 Flutter AndroidView 中点击时 EditText 不显示键盘

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)

flutter flutter-plugin flutter-platform-channel

5
推荐指数
0
解决办法
727
查看次数

更新/.pub-cache中的flutter依赖性

我删除了我的文件夹 .pub-cache/hosted/pub.dartlang.org/this_plugin

更新内部依赖项的命令是什么pubsec.yaml 我相信是

颤振包得到

下的文件夹.pub-cache仍不是最新的。

注意:pubspec.lock我删除了一个

flutter flutter-dependencies flutter-plugin

5
推荐指数
5
解决办法
3856
查看次数

如何为 Android 和 IOS 实现 FIDO2 (WebAuthn)

我开发了一个 Web 应用程序,它使用 WebAuthn API 来使用硬件安全密钥进行身份验证。效果很好。

我正在尝试使用 Flutter 原生实现它,并兼容 IOS 和 Android。这些平台有任何库或起点吗?我不想使用 ChromeTabs 或 SFSafariViewController。

请指教。

flutter webauthn flutter-plugin

5
推荐指数
1
解决办法
4677
查看次数

使用 flutter 如何将音频文件与任何视频(如相机动作)的同步合并,就像 flutter 中提供任何特定的包一样

我一直在寻找特定问题的软件包或任何方法,我用谷歌搜索但没有找到任何解决方案,所以我的问题是,我想要像tictock应用程序这样的功能,用户可以选择任何音乐音频,他们可以根据该用户可以执行操作,同步音频和视频,我希望将文件输出为视频。我怎样才能实现这一点,有没有任何方法或任何包在颤振中可用。我已经选择了音频和视频录制功能,但我仍然坚持合并两者,如果 FFmpeg 包我们可以使用方法,如何使用该包..请解释一下。

dart flutter fluent-ffmpeg flutter-plugin flutter-packages

5
推荐指数
1
解决办法
3472
查看次数

FlutterPlugin 与 FlutterActivity

对于我的 Flutter 应用程序,我想为自己编写一个小插件,它在 Android 中原生使用相机。

我正在阅读文档,并且对 Flutter 和 Native 与 MethodChannels 之间的“粘合剂”有了基本的了解。但有一件事我不明白:

如果我的插件的本机类正在实现 FlutterPlugin 和 ActivityAware,或者如果我直接使用扩展 FlutterActivity 并连接到 Flutter 引擎的 Activity,那么到底有什么区别?

flutter flutter-plugin

5
推荐指数
0
解决办法
324
查看次数

Flutter iOS 插件中未调用“handle”函数

我们创建了一个 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并且它起作用了- …

swift flutter flutter-plugin flutter-ios

5
推荐指数
0
解决办法
584
查看次数

Flutter:从本机代码生成的隔离调用插件时出现 MissingPluginException

我正在构建一个 Flutter 应用程序,当设备连接到另一个蓝牙设备时,该应用程序能够执行一些操作。这个应用程序应该可以在 Android 和 iOS 上运行,但为了简单起见,我在这篇文章中将重点关注 Android。此外,无论应用程序是在前台、后台还是被杀死,这都必须有效。

以下是该应用程序的架构:

  1. 我有一个Android 本机代码,可以通过BroadcastReceiver.
  2. 我按照本教程设置了Android 代码和 Flutter 代码之间的通信https://medium.com/@chetan882777/initiating-calls-to-dart-from-the-native-side-in-the-background -with-flutter-plugin-7d46aed32c47
  3. 当 AndroidBroadcastReceiver被蓝牙事件触发时,信息会发送到 Flutter 代码(即使应用程序处于后台或被杀死)。创建 Flutter 隔离来处理 Flutter 代码。

一切都运转良好。Flutter 代码被调用,我可以用来print(data)记录 Android 代码提供的数据。

当我想从隔离中调用任何 Flutter 插件(如sqflitepackage_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 插件?

预先非常感谢

dart-isolates flutter flutter-plugin

5
推荐指数
1
解决办法
819
查看次数

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)

但我找不到任何关于此的示例,以及它如何实现的帮助以及平台插件如何使用平台接口包,如文档中所述

关于这个主题有什么好的和更新的示例或教程吗?

flutter flutter-plugin

5
推荐指数
1
解决办法
1089
查看次数

Flutter 在插件之间共享原生对象

我正在开发几个用于流式传输和录制视频的插件。在 Android 领域,通常不可能让两个东西同时访问相机。

显而易见的解决方案是将两个插件合并为一个编组/共享资源的插件。

这让我思考。有没有办法在插件之间共享本机对象?我找不到这方面的任何文档或资源。

有人对如何实现这一目标有建议吗?

plugins flutter flutter-plugin flutter-native

5
推荐指数
1
解决办法
405
查看次数