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

How do I show a custom Android notification using Flutter widgets?

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

我做了什么:

我尝试使用显示 Flutter widget in an Android Fragment and display that Fragment using 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())
 }

为了使 flutter 小部件正常工作,应该有一个 flutter 虚拟机在工作。在远程视图中没有这种可能性,因为它是 Android 系统的 运行 并且它不知道颤振。此外,甚至 not all android 本机小部件也可以呈现为远程视图。

不过,您可以在此处执行一些选项:

  • 如果您的 flutter 虚拟机处于活动状态,您可以栅格化 flutter 小部件并将其显示在远程视图内的 ImageView 中。虽然它不会是交互式的。您可以将它与一些 android 本机按钮结合使用。
  • 将服务与 ui 一起使用 - 理论上它可以呈现 flutter 视图,但很难实现,因为几乎不可能显示 activity.
  • 之外的片段
  • 使 flutter 中所需的所有逻辑都通过平台通道将数据传入和传出本机实现。平台通道仅在应用程序主线程工作时才工作。
  • 将所有内容实现为 android navite,不要为 flutter 而烦恼,因为 flutter 是为跨平台而设计的,之前的所有内容都无法在 iOs 上运行,因此 flutter 的重点是在这种情况下不存在。