Skip to content

typesafe event channels don't appear to support instances on dart side #161813

@time4tea

Description

@time4tea

Steps to reproduce

Related to #66711

Using type safe event channels, on dart side event channel will be created using following generated code:

Stream<BobEvent> streamEvents({String instanceName = ''}) {
  if (instanceName.isNotEmpty) {
    instanceName = '.$instanceName';
  }
  const EventChannel streamEventsChannel = EventChannel(
      'dev.flutter.pigeon.bob_interface.EventChannelMethods.streamEvents',
      pigeonMethodCodec);
  return streamEventsChannel.receiveBroadcastStream().map((dynamic event) {
    return event as BobEvent;
  });
}

notice that the instance name is not used in the event channel name

on the kotlin side:

abstract class StreamEventsStreamHandler : PigeonEventChannelWrapper<BobEvent> {
  companion object {
    fun register(messenger: BinaryMessenger, streamHandler: StreamEventsStreamHandler, instanceName: String = "") {
      var channelName: String = "dev.flutter.pigeon.bob_interface.EventChannelMethods.streamEvents"
      if (instanceName.isNotEmpty()) {
        channelName += ".$instanceName"
      }
      val internalStreamHandler = PigeonStreamHandler<BobEvent>(streamHandler)
      EventChannel(messenger, channelName, MessagesPigeonMethodCodec).setStreamHandler(internalStreamHandler)
    }
  }
}

notice that the instance name is used in the channel name.

so the event channels will not line up on the dart and native sides?

Expected results

dart event channel name should probably be

 'dev.flutter.pigeon.bob_interface.EventChannelMethods.streamEvents${instanceName}',

or use naming of messageChannelSuffix which is consistent with other event channels.

Actual results

//

Code sample

// see above

Screenshots or Video

//

Logs

//

Flutter Doctor output

// Flutter 3.27.2

Metadata

Metadata

Assignees

Labels

p: pigeonrelated to pigeon messaging codegen toolpackageflutter/packages repository. See also p: labels.team-ecosystemOwned by Ecosystem team

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions