我想在我的颤动应用程序的相机上实现近乎实时的OCR.为此,我想快速访问摄像机数据.据我所知,我有两个选择,并且两个都遇到了障碍:
CameraPreview通过RepaintBoundary围绕它创建一个RenderRepaintBoundary并调用来截取屏幕截图boundary.toImage().这种方法的问题在于.toImage方法似乎只捕获边界中绘制的小部件而不是摄像机预览中的数据.Simmilar对这里描述的问题:https://github.com/flutter/flutter/issues/17687
使用controller.takePicture(filePath)Camera 0.2.1 捕获图像,类似于示例文档.这里的问题是在图像可用之前需要超长时间(2-3秒).我想这是因为文件在捕获时保存到光盘,然后需要再次从文件中读取.
有什么方法可以在捕获后直接访问图片信息,做一些事情,比如预处理和OCR?
这是我第一次尝试创建一个 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) 我有一个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。现在,即使手势几乎完全是垂直的,水平滚动似乎总是可以取胜的。如果页面完全垂直滚动,则仅在手势停止之后(即,当我在手势之后停止触摸屏幕时)-在手势发生时不会进行垂直滚动。
添加和删除VerticalDragGestureRecognizer从gestureRecognizers没有任何效果现在-无论哪种方式,程序,工作起来就像识别器不在名单上(尽管这并不是说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) 我正在构建一个需要 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 文件中,我编写了以下几行以在registerWith和onAttachedToEngine. 据我了解,这些基本上是 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) 我们正在为 flutter 构建一个插件, iterable.com 这里la-haus/iterable-flutter,我们想要测试我们插件的 android 实现,我们已经能够为 flutter 端运行测试,但不能运行每个本机实现测试。
所以我们有:
lib/:库实现,客户端使用的接口。
tests/:测试库的 flutter 端android/
运行 flutter 插件测试,flutter test在项目的根目录运行,它运行test/iterable_flutter_test.dart,但不运行 android 的。
我们已经看到这些文档flutter/wiki/Plugin-Tests,但我仍然不知道如何运行它们。
如何运行Android 实现 android/src/test测试?
我们当前的问题是https://github.com/la-haus/iterable-flutter/issues/22
当我在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但没有成功。
如果您知道这个问题的答案,请回答这个问题。
我目前正在 AppCompatActivity 中使用 FlutterFragment。
另外,我使用预热的 flutter 引擎和 FlutterPlugin 在需要时提供往返于本机/flutter 的 methodChannel 。
我目前的情况是,当我的 FlutterFragment 加载时,我想通过插件启动一个特定的方法来颤动。
我现在知道onAttachedToEngine当插件附加到引擎时,它会在 FlutterPlugin 中被调用。
但现在FlutterFragment需要在启动时调用该插件。
在 FlutterFragment 调用插件调用之前,如何确保插件已附加到引擎。另一方面,在插件调用片段上的任何内容之前,如何确保 FlutterFragment 已附加并准备就绪。
我唯一看到的就是ActivityAware界面。我想过从activity中的fragmentManager获取fragment,但是由于某种原因这些接口方法从未被调用。
旁注:我无法轻松地将 AppCompatActivity 更改为 FlutterFragmentActivity,因此如果不需要,那么这就是我的偏好。
我们已经在 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
我正在开发一个 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) 我正在开发一个用于安全视频流的 flutter 插件。我使用一个原生 Android 插件,它使用片段来播放视频。在 flutter 中浏览平台视图。看来我只能使用 getView() 重写方法将 Android 视图返回到小部件。但我必须使用片段,并且无法将片段返回到 getView() 重写方法。
无论如何,我是否可以将片段传递或返回到 flutter 小部件,以便我可以使用该 flutter 小部件来显示片段?
提前致谢。
flutter ×10
flutter-plugin ×10
android ×6
flutter-test ×2
camera ×1
dart ×1
kotlin ×1
permissions ×1
unit-testing ×1