init method
Future<IPlatformEntrypoint>
init({
- required InitRequest request,
- required CallBacksController controller,
- required IPlatformEntrypoint instanceFactory({
- required CallBacksController callBacksController,
- required EventChannel eventChannel,
- required String id,
- required String mainChannelId,
- required MethodChannel methodChannel,
override
Instantiates a new channel on host.
Parameters:
instanceFactory
- Gives us the opportunitty to intercept and overrides some properties.
Throws:
ChannelInvokeException - When there's some problem with native communication.
Implementation
@override
Future<IPlatformEntrypoint> init({
required InitRequest request,
required CallBacksController controller,
required IPlatformEntrypoint Function({
required String id,
required String mainChannelId,
required MethodChannel methodChannel,
required EventChannel eventChannel,
required CallBacksController callBacksController,
})
instanceFactory,
}) async {
log('DevicePlatform -> init: ${request.id}');
final initChannel = await _mainChannel.invokeMethod<dynamic>(
'init',
request.toMap(),
);
if (initChannel == null) {
throw ChannelInvokeException();
}
final response = InitResponse.fromMap(initChannel);
final id = response.id;
_actualEntrypoint = instanceFactory(
id: id,
mainChannelId: _mainChannel.name,
methodChannel: MethodChannel(
'${NativeCommunicationMetadata.platformMethodChannel}.$id'),
eventChannel:
EventChannel('${NativeCommunicationMetadata.hostEventChannel}.$id'),
callBacksController: controller,
);
_entrypointsHistory.putIfAbsent(response.id, () => true);
_entrypointsHistory.update(response.id, (_) => true);
return _actualEntrypoint!;
}