标签: flutter-plugin

如何快速访问相机帧

我想在我的颤动应用程序的相机上实现近乎实时的OCR.为此,我想快速访问摄像机数据.据我所知,我有两个选择,并且两个都遇到了障碍:

  1. CameraPreview通过RepaintBoundary围绕它创建一个RenderRepaintBoundary并调用来截取屏幕截图boundary.toImage().这种方法的问题在于.toImage方法似乎只捕获边界中绘制的小部件而不是摄像机预览中的数据.Simmilar对这里描述的问题:https://github.com/flutter/flutter/issues/17687

  2. 使用controller.takePicture(filePath)Camera 0.2.1 捕获图像,类似于示例文档.这里的问题是在图像可用之前需要超长时间(2-3秒).我想这是因为文件在捕获时保存到光盘,然后需要再次从文件中读取.

有什么方法可以在捕获后直接访问图片信息,做一些事情,比如预处理和OCR?

camera flutter flutter-plugin

7
推荐指数
1
解决办法
3045
查看次数

Flutter插件开发未解决参考:io

这是我第一次尝试创建一个 flutter 插件,我从 android studio 创建了 flutter 插件项目并且它运行良好,当我尝试为 android 添加平台特定的代码时,我遇到了一些问题,在同一个项目平台特定的代码编辑几乎死了(没有掉毛)。我在android studio中导入了MyPluginProject/android,也有一些问题,

Unresolved reference: io
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

这是输出 flutter doctor

Doctor summary (to see all details, run flutter doctor -v):
[?] Flutter (Channel stable, v1.7.8+hotfix.2, on Linux, locale en_US.UTF-8)

[?] Android toolchain - develop for Android devices (Android SDK version 29.0.0)
[?] Android Studio (version 3.4)
[?] Connected device (1 available)

• No issues found!
Run Code Online (Sandbox Code Playgroud)

android android-studio flutter flutter-plugin

7
推荐指数
2
解决办法
7311
查看次数

将水平滚动与WebView结合使用时的滚动优先级

我有一个WebView水平滚动里面的垂直滚动PageView。像这样:

PageView.builder(
  itemCount: 5,
  itemBuilder: (context, index) {
    return WebView(
      initialUrl: 'https://flutter.dev/docs',
      gestureRecognizers: [
        Factory(() => VerticalDragGestureRecognizer()),
      ].toSet(),
    );
  },
);
Run Code Online (Sandbox Code Playgroud)

在Flutter的先前稳定版本(1.5.4)中,此操作按预期工作-垂直滚动将在WebView中移动内容,水平滚动将在PageView中移动。

升级到Flutter后,此操作中断了v1.7.8+hotfix.3。现在,即使手势几乎完全是垂直的,水平滚动似乎总是可以取胜的。如果页面完全垂直滚动,则仅在手势停止之后(即,当我在手势之后停止触摸屏幕时)-在手势发生时不会进行垂直滚动。

添加和删除VerticalDragGestureRecognizergestureRecognizers没有任何效果现在-无论哪种方式,程序,工作起来就像识别器不在名单上(尽管这并不是说gestureRecognizers完全忽略,因为加入EagerGestureRecognizer确实有效果)。

这是手势竞技场的调试输出(请记住,我试图将笔势保持尽可能垂直,但是即使HorizontalDragGestureRecognizer我也垂直移动了手势,即使手指稍微向两侧移动也足以赢得胜利。全部时间):

I/flutter (30125): Gesture arena 14   ? ? Opening new gesture arena.
I/flutter (30125): Gesture arena 14   ? Adding: Instance of '_CombiningGestureArenaMember'
I/flutter (30125): Gesture arena 14   ? Adding: LongPressGestureRecognizer#9cad1(debugOwner: GestureDetector, state: ready)
I/flutter (30125): Gesture arena 14   ? Adding: …
Run Code Online (Sandbox Code Playgroud)

flutter flutter-plugin

7
推荐指数
1
解决办法
663
查看次数

如何在flutter插件中使用接收器(BroadcastReceiver)?

问题

我正在构建一个需要 Radar.io SDK 某些功能的应用程序,因此我决定创建插件,以便在该项目结束后我可以与 Flutter 社区的其他成员共享该插件。问题是,我无法接收此插件中的事件。这对于插件很重要,因为为了接收地理定位触发器和其他后台事件等事件,该接收器需要接收实时信息。

我已经成功实现了https://radar.io/documentation/sdk中的 Android SDK(使用 Kotlin)中的每个功能,但是,当事件发生时,接收器不会被调用。我知道设备正在被跟踪,因为 Radar.io 仪表板中的位置已更新,但是,当发生各种事件时,接收器根本不会执行。

我尝试过的

以下是文档告诉您如何在清单中注册接收器的方法。

  <receiver
      android:name=".MyRadarReceiver"
      android:enabled="true"
      android:exported="false">
      <intent-filter>
          <action android:name="io.radar.sdk.RECEIVED" />
      </intent-filter>
  </receiver>
Run Code Online (Sandbox Code Playgroud)

这适用于标准应用程序,但是,当我在清单中注册接收器时,应用程序不会在接收器所在的插件目录中查找。相反,它会查找应用程序 android 目录并返回无法找到数据路径的错误。这会导致应用程序终止。

为了解决这个问题,我发现可以通过编程方式设置接收器,所以我决定尝试一下。

在插件的主 Kotlin 文件中,我编写了以下几行以在registerWithonAttachedToEngine. 据我了解,这些基本上是 onStart 函数。registerWith是为了与旧设备兼容而保留的旧功能。

val myRadarReceiver = MyRadarReceiver()
val intentFilter = IntentFilter()
intentFilter.addAction("io.radar.sdk.RECEIVED")
ContextWrapper(this.context).registerReceiver(myRadarReceiver, intentFilter)
Run Code Online (Sandbox Code Playgroud)

引用的类是SDK 中类MyRadarReceiver()的扩展,它扩展意味着这是我的广播接收器。这是课程:RadarReceiverBroadcastReceiver

public class MyRadarReceiver: RadarReceiver() {

  override fun onEventsReceived(context: Context, events: Array<RadarEvent>, user: RadarUser) {
    println("test: " + "an event was received") …
Run Code Online (Sandbox Code Playgroud)

android broadcastreceiver kotlin flutter flutter-plugin

7
推荐指数
2
解决办法
1万
查看次数

Flutter - 如何通过 Android 插件本机代码运行单元测试

我们正在为 flutter 构建一个插件, iterable.com 这里la-haus/iterable-flutter,我们想要测试我们插件的 android 实现,我们已经能够为 flutter 端运行测试,但不能运行每个本机实现测试。

文件夹和测试

所以我们有:

  • lib/:库实现,客户端使用的接口。
    • tests/:测试库的 flutter 端
  • android/

我们尝试过什么

问题

如何运行Android 实现 android/src/test测试?

我们当前的问题是https://github.com/la-haus/iterable-flutter/issues/22

unit-testing flutter flutter-test flutter-plugin

7
推荐指数
1
解决办法
867
查看次数

任务“:permission_handler:compileDebugJavaWithJavac”执行失败

当我在flutter中添加permission_handler插件时。发生此错误:

失败:构建失败并出现异常。

* What went wrong:
Execution failed for task 
':permission_handler:compileDebugJavaWithJavac'.   
> Compilation failed; see the compiler error output for details.
Run Code Online (Sandbox Code Playgroud)

我尝试更改插件的版本,也尝试运行flutter clean但没有成功。

如果您知道这个问题的答案,请回答这个问题。

permissions android dart flutter flutter-plugin

7
推荐指数
1
解决办法
9117
查看次数

FlutterFragment 与 FlutterPlugin - 如何获取参考

我目前正在 AppCompatActivity 中使用 FlutterFragment。

另外,我使用预热的 flutter 引擎和 FlutterPlugin 在需要时提供往返于本机/flutter 的 methodChannel 。

我目前的情况是,当我的 FlutterFragment 加载时,我想通过插件启动一个特定的方法来颤动。

我现在知道onAttachedToEngine当插件附加到引擎时,它会在 FlutterPlugin 中被调用。

但现在FlutterFragment需要在启动时调用该插件。

在 FlutterFragment 调用插件调用之前,如何确保插件已附加到引擎。另一方面,在插件调用片段上的任何内容之前,如何确保 FlutterFragment 已附加并准备就绪。

我唯一看到的就是ActivityAware界面。我想过从activity中的fragmentManager获取fragment,但是由于某种原因这些接口方法从未被调用。

旁注:我无法轻松地将 AppCompatActivity 更改为 FlutterFragmentActivity,因此如果不需要,那么这就是我的偏好。

android flutter flutter-plugin

7
推荐指数
0
解决办法
439
查看次数

Flutter 中提供者的单元测试

我们已经在 TDD 方法中启动了一个关于 Flutter 的新项目。我正在使用状态管理提供程序。在尝试编写小部件测试时,我们面临着测试提供程序的问题。你能否用一个例子来建议为提供者和小部件注入提供者的单元测试。

我遇到以下问题

??? EXCEPTION CAUGHT BY FLUTTER TEST FRAMEWORK ?????????????????????????????????????
The following ProviderNotFoundException was thrown running a test:
Error: Could not find the correct Provider above this SplashScreen Widget

To fix, please:

Ensure the Provider is an ancestor to this SplashScreen Widget
Provide types to Provider
Provide types to Consumer
Provide types to Provider.of()
Always use package imports. Ex: `import 'package:my_app/my_code.dart';
Ensure the correct context is being used.
Run Code Online (Sandbox Code Playgroud)

???启动画面代码??????????????????????????????????????????

??? EXCEPTION CAUGHT BY FLUTTER TEST FRAMEWORK …
Run Code Online (Sandbox Code Playgroud)

flutter flutter-test flutter-dependencies flutter-channel flutter-plugin

6
推荐指数
2
解决办法
3953
查看次数

尝试创建未注册类型的平台视图

我正在开发一个 Flutter 插件,它使用 AndroidView 来显示本机 Android 视图

但我得到以下异常:

Unhandled Exception: PlatformException(error, java.lang.IllegalStateException: Trying to create a platform view of unregistered type: type
Run Code Online (Sandbox Code Playgroud)

我不明白为什么会这样。有人可以解释这个异常的起源吗?

我认为你必须像这样注册视图类型PluginName.java

@Override
  public void onAttachedToEngine(@NonNull FlutterPluginBinding binding) {
    binding.getPlatformViewRegistry()
           .registerViewFactory("type", new ViewFactory());
  }
Run Code Online (Sandbox Code Playgroud)

在示例应用程序的 main.dart 中,简单地使用该视图类型:

AndroidView(
          viewType: "type",
          layoutDirection: TextDirection.ltr,
          creationParams: creationParams,
          creationParamsCodec: const StandardMessageCodec(),
        )
Run Code Online (Sandbox Code Playgroud)

android flutter flutter-plugin

6
推荐指数
0
解决办法
841
查看次数

Flutter 插件中使用平台视图的 Android 片段

我正在开发一个用于安全视频流的 flutter 插件。我使用一个原生 Android 插件,它使用片段来播放视频。在 flutter 中浏览平台视图。看来我只能使用 getView() 重写方法将 Android 视图返回到小部件。但我必须使用片段,并且无法将片段返回到 getView() 重写方法。

无论如何,我是否可以将片段传递或返回到 flutter 小部件,以便我可以使用该 flutter 小部件来显示片段?

提前致谢。

android android-fragments flutter flutter-plugin

6
推荐指数
0
解决办法
287
查看次数