问题标签 [flutter-platform-channel]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
502 浏览

flutter - 在 Flutter 中使用特定于平台的包

我不确定这是否是合适的堆栈交换站点,但我认为它比我能想到的其他站点更适合这里。无论如何,我在一个移动应用程序开发团队工作,我们正在考虑使用 Flutter 来开发我们未来的移动应用程序,因为它减少了为 iOS 和 Android 开发所需的工作量(我们只是一个小团队)。

我阅读了一些关于 Flutter 的信息,并检查了可用的包和 Dart/Flutter Pub,还有一些用于 Android 和 iOS 的 Flutter 包尚不可用。以 MSAL(Microsoft 身份验证库)为例。阅读完文档后,我了解了平台通道以及如何运行一些 KT/Swift 等特定代码并通过类似MethodChannelKotlin 的方式返回它,但 Flutter 文档中的示例显示了仅返回特定数据类型或简单的示例价值观。如果我想使用 MSAL 对用户进行身份验证怎么办?这将涉及一些在 Flutter 中不会发生的 UI 工作,因为它依赖于浏览器或 web 视图(取决于您的 MSAL 配置)

我的问题可能主要有两点:

  1. 如果你有一个依赖于 iOS 或 Android 的 UI 的包,它不会占用你应用程序的全部功能,那怎么可能仍然使用 Flutter 来开发你的应用程序的其余部分呢?仍在使用特定于平台的软件包?
  2. 是否有可能拥有超过 1 个 Activity 或 ViewController 来执行此操作,然后再转到 Flutter 部分?因为我认为这是上一个问题的一种可能解决方案。

笔记:

我知道 Dart Pub 中有用于身份验证的包,但我只是使用 MSAL 作为示例,我们还使用其他依赖于显示自定义视图来验证用户的包。

0 投票
0 回答
158 浏览

android - 将颤振模块嵌入到android原生

我有现有的以 native 编写的 android 应用程序。现在我想为现有应用程序开发新功能。我将开发用flutter编写的模块并将其嵌入到我现有的应用程序中

问题是,如果颤振模块需要连接到外部外围设备,例如蓝牙打印机或从外部 REST API 请求数据。这是否可以做到?

0 投票
1 回答
1252 浏览

java - 如何使用 dart 创建地理围栏应用程序?

我想在颤振中构建一个地理围栏应用程序。但我没有找到从 dart 创建地理围栏的方法,所以我正在从 java->dart 做平台通道。有没有其他方法可以在颤振中创建地理围栏。Flutter 中地理围栏的大部分插件都不能正常工作。所以我想从头开始创建一个地理围栏应用程序。请给我一些参考,重新评估它的任何教程、代码示例等。

0 投票
1 回答
2275 浏览

android - 如何调试从 Flutter Platform Channel 调用的原生 Android

我似乎无法弄清楚如何对通过平台通道从 Flutter 应用程序调用的原生 Android 模块进行调试。我正在使用 Flutter 文档(https://flutter.dev/docs/development/platform-integration/platform-channels)中的示例。我尝试了以下方法:

  1. 在 IntelliJ 中打开 Flutter 项目
  2. 右键单击android文件夹并选择Flutter | 在 Android Studio 中打开 Android 模块
  3. Android Studio 打开原生 Android 代码。
  4. 在 Android 代码中设置断点
  5. 单击 Android Studio 中的调试
  6. 模拟器显示“等待调试器应用程序正在等待调试器附加”,而在 Android Studio 中,调试控制台显示“已连接到目标 VM,地址:'localhost:8601''
  7. 从 IntelliJ 运行 Flutter App(我也尝试过从 IntelliJ 调试 - 颤振代码将在断点处停止)
  8. 原生 Android 代码的断点永远不会中断

我究竟做错了什么?

0 投票
3 回答
3951 浏览

android - 通过 Method 通道将 Map/JSON 从 Flutter 发送到 Android

我在 Dart 和 Kotlin 中建立了一个基本的方法通道

飞镖代码

Kotlin 代码

我想将 JSON/Map 数据传递到 Kotlin 端。我的数据如下所示:

如何将这些数据从 dart 传递到 kotlin?

0 投票
6 回答
18731 浏览

java - Flutter 项目:缺少 MainActivity.java

我正在尝试在 Flutter 项目中创建一个平台通道来访问特定于 Android 的 java 代码。我正在 Android Studio 中创建一个新的 Flutter 应用程序项目,并遵循教程,其中提到:

1- 导航到保存 Flutter 应用程序的目录,然后选择其中的 android 文件夹。单击确定。

2- 在项目视图中打开位于 java 文件夹中的 MainActivity.java 文件。

但是,该项目仅包含 MainActivity.kt 而不是 Java:

在此处输入图像描述

我尝试使用上下文菜单>新建>活动在java文件夹中手动创建一个新活动,但它不起作用。


编辑:

最好的解决方案(如果您可以创建一个新项目)是在设置项目时取消选中“包括对 Android 代码的 Kotlin 支持”。这会自动创建 MainActivity.java。Objective-C 和 Swift 也是如此。如果要使用 Objective-C,请取消选中“包括 Swift 对 iOS 代码的支持”

在此处输入图像描述

0 投票
1 回答
141 浏览

flutter - 是否可以将平台视图从主机 iOS 应用程序添加到颤振模块视图而不转换为插件?

我看到的大多数平台视图示例要么是独立的 Flutter 应用程序,要么是通过谷歌地图/网络视图等 Flutter 插件。就我而言,我正在向我的 iOS 项目添加一个颤振模块。有没有办法在颤振模块视图代码中包含来自我的主机 iOS 应用程序的平台视图。我正在按照这里的指南进行操作:

但是对以下代码感到困惑:

因为现在我正在为插件“Runner”调用注册商,因为平台视图位于主机应用程序本身而不是插件中。这里应该做什么?

但我收到以下错误。

0 投票
0 回答
43 浏览

android - Flutter 的 VS 代码扩展

我想使用Java为Android编写特定于平台的代码,但在Visual Studio Code中找不到合适的扩展。我安装了推荐的 Java 扩展,但它不能正常工作,就像它没有预测任何 android 特定的东西一样。

有没有办法像在 Android Studio 中那样工作?

0 投票
2 回答
4674 浏览

android - 调用函数并将参数从 Kotlin 传递给 Flutter

我正在处理PlatformChannels尝试从Kotlin到进行通信Flutter。尝试实际执行来自flutter平台频道的文档中解释的内容,但方向相反:

颤振平台频道文档

想法是从 MainActivity.kt 类的 configureFlutterEngine 函数中调用 Flutter 函数。

为此,我在 Flutter 方面使用 main.dart(来自 Flutter 的默认示例):

Kotlin 方面,我只是尝试在MainActivity.kt上调用颤振回调方法:

但是当我运行代码时,Flutter 端没有打印任何内容。也没有崩溃或异常。

0 投票
4 回答
5810 浏览

flutter - 在颤振插件中获取活动参考

在我创建flutter插件的时候,插件类中默认有两个方法:

该文件的评论说: It is encouraged to share logic between onAttachedToEngine and registerWith to keep them functionally equivalent. Only one of onAttachedToEngine or registerWith will be called depending on the user's project. onAttachedToEngine or registerWith must both be defined in the same class.

现在,我需要从这里开始另一个活动,使用activity.startActivityForResult(). registerWith(registrar: Registrar)在using中可以获得对活动的引用registrar.activity()。我怎样才能在方法中做到这一点onAttachedToEngine(flutterPluginBinding: FlutterPlugin.FlutterPluginBinding)