如何使用flutter和kotlin在应用程序之外拥有小部件?
Posted
技术标签:
【中文标题】如何使用flutter和kotlin在应用程序之外拥有小部件?【英文标题】:How to have widgets outside the app using flutter and kotlin? 【发布时间】:2019-06-07 14:43:52 【问题描述】:我需要一种方法来制作按钮或容器,即使我像这样关闭应用程序时仍然可以看到:。但这在颤振中是根本不可能的。所以我一直在做的是在我的应用程序上创建一个平台通道,并尝试使用本机组件制作容器和按钮。但是我一直在使用kotlin,对这种编程语言了解不多。有没有办法让我的代码能够制作这样的小部件?(如果你能编辑我的完整代码,我会非常感谢你。)
完整代码:
颤动:
class FloatingContainer extends StatelessWidget
static const platform = const MethodChannel('flutter.App.com.channel');
@override
Widget build(BuildContext context)
return Container ();
Future<Null> _showNativeView() async
科特林:
package com.example.swipe
import android.os.Bundle
import io.flutter.app.FlutterActivity
import io.flutter.plugins.GeneratedPluginRegistrant
import io.flutter.plugin.common.MethodChannel
class MainActivity() : FlutterActivity()
private val CHANNEL = "flutter.App.com.channel"
override fun onCreate(savedInstanceState: Bundle?)
super.onCreate(savedInstanceState)
GeneratedPluginRegistrant.registerWith(this)
MethodChannel(flutterView, CHANNEL).setMethodCallHandler call, result ->
【问题讨论】:
【参考方案1】:您好,在这种情况下,您正在搜索 PlatformChannels 您可以在此处查看文档:https://flutter.dev/docs/development/platform-integration/platform-channels 或者如果您想要我在我的网站上发布关于此的小帖子:http://fjbatresv.com/flutter-tambien-habla-nativo/(选择您的帖子顶部的语言。)
【讨论】:
【参考方案2】:这称为 Draw Over Other 应用程序。
此功能在 ios 中不可用,这可能是 Flutter 没有此功能或官方包的原因。
但要在您的应用程序中实现此功能,您可以编写一些 PlatformChannels
。
This 权限允许您在所有内容上绘图。
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
允许应用程序使用类型打开窗口 TYPE_SYSTEM_ALERT,显示在所有其他应用程序之上。 很少有应用程序应该使用此权限;这些窗口旨在 用于与用户进行系统级交互。
常量值:“android.permission.SYSTEM_ALERT_WINDOW”
This 代码也可以帮助您实现这一目标。
您也可以查看 Flipkart-Incubator 的 springy-heads 库。
【讨论】:
【参考方案3】:除了不能在 IOS 上运行的限制之外,flutter 中有一个名为System Alert Window 的插件,它的作用是一样的
它在所有其他应用程序以及回调事件上显示类似 Truecaller 的叠加窗口
【讨论】:
以上是关于如何使用flutter和kotlin在应用程序之外拥有小部件?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Flutter App 中删除 Kotlin 支持?
如何在 Flutter 项目中让 Intellij Idea 的 Intellisense 在 C++ 和 Kotlin 上工作?