如何使用Flutter小部件显示自定义Android通知?

n6lpvg4x  于 2023-05-23  发布在  Flutter
关注(0)|答案(1)|浏览(205)

我想使用Flutter小部件在Android上显示自定义通知?我想知道这是否可行。

我所做的:

我尝试使用显示Flutter widget in an Android Fragment和显示片段使用RemoteViews for custom Android notifications
会显示一个通知,但它不包括Flutter小部件。参见下面的屏幕截图:

代码:

var newFlutterFragment: FlutterFragment = FlutterFragment.withCachedEngine("my_engine_id")
     .shouldAttachEngineToActivity(false)
     .build()
 if (fragmentManager != null) {
     fragmentManager
         .beginTransaction()
         .add(
             R.id.fragment_container,
             newFlutterFragment,
             TAG_FLUTTER_FRAGMENT
         )
         .commit()
 }


 val notificationLayout = RemoteViews(packageName, R.layout.activity_layout)
 val notificationLayoutExpanded = RemoteViews(packageName, R.layout.activity_layout)

 var builder = NotificationCompat.Builder(this, CHANNEL_ID)
     .setSmallIcon(R.drawable.ic_bg_service_small)
     .setCustomContentView(notificationLayout)
     .setCustomBigContentView(notificationLayoutExpanded)
     .setPriority(NotificationCompat.PRIORITY_DEFAULT)

 var notificationId = 1;

 with(NotificationManagerCompat.from(this)) {
     // notificationId is a unique int for each notification that you must define
     notify(notificationId, builder.build())
 }
zzoitvuj

zzoitvuj1#

为了让Flutter小部件工作,应该有一个Flutter框架工作。它仅适用于常规视图。在远程视图中,不存在这种可能性,因为它是由Android系统本身渲染的,而不是应用程序,它不知道Flutter,它封装在应用程序内部,而不是系统内部。此外,即使是not all Android原生小部件也可以呈现为远程视图。
不过,您可以在这里做一些选择:

  • 如果您的flutter框架存在,您可以栅格化flutter小部件并在远程视图内的ImageView中显示它。但它不会是互动的。您可以将其与一些Android原生按钮结合使用。
  • 使用带有ui的service-理论上,它可以呈现flutter视图,但很难实现,因为几乎不可能显示活动之外的片段,并且显示一个普通视图需要Flutter框架的适当生命周期处理,这不是一项微不足道的任务。
  • 在Flutter中创建所有需要的逻辑,并通过平台通道将数据传递到本机实现或从本机实现传递数据。从2023年5月起,平台通道应该可以在主线程和后台线程上工作。
  • 把所有的东西都实现为Android原生的,不要用Flutter,因为Flutter是跨平台的,所有以前的东西都不能在iOS上工作;因此在这种情况下不存在Flutter点。

相关问题