如何使用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 传递给 Kotlin?

如何从 Flutter App 中删除 Kotlin 支持?

如何在 Flutter 项目中让 Intellij Idea 的 Intellisense 在 C++ 和 Kotlin 上工作?

如何解决flutter项目编译Debug Kotlin报错

如何在 Kotlin 中使用 anko 删除除最新 10 条记录之外的所有记录?

如何在android studio中配置flutter项目?