Канал метода удаления дротиком

#flutter #dart #plugins

#трепетание #дротик #Плагины

Вопрос:

Есть ли способ утилизировать MethodChannel / EventChannel , когда в этом нет необходимости? Я спрашиваю, потому что хочу создать несколько каналов методов / событий для объектов.

Пример:

 class Call {
 ... fields ...
 MethodChannel channel;

 Future<void> answer() {
   return channel.invokeMethod('@answer')
 }
}
  

Для каждого Call объекта я хочу, чтобы у него был свой собственный канал, чтобы я мог отправлять сообщения в собственную часть, не имея 1 канала метода, который обрабатывает всю логику вызовов.

Рекомендуется ли использовать 1 канал?

Спасибо.

Комментарии:

1. У меня был аналогичный вопрос. Существует встроенная ошибка, которая возникает при возврате в приложение по какой-либо причине Unable to merge the raster and platform threads. ' r0 00000000 r1 00001f72 r2 00000006 r3 b36e9b70 r4 b36e9b84 r5 b36e9b68 r6 00001c45 r7 0000016b r8 b36e9b80 r9 b36e9b70 r10 b36e9ba0 r11 b36e9b90 ip 00001f72 sp b36e9b40 lr f2391c9f pc f2391cb2

Ответ №1:

Сам канал — это просто оболочка вокруг имени с удобными методами для работы BinaryMessenger . Только когда вы устанавливаете обратный вызов с setMethodCallHandler тем, что обратный вызов (и, вероятно, ваш объект) удерживается мессенджером, и вы должны setMethodCallHandler снова вызвать с null , чтобы он освободил ваш объект.

Таким образом, вы можете создавать и использовать столько каналов, сколько захотите, при условии, что у них разные имена, удаление не требуется. Однако, когда вы прослушиваете вызов метода с помощью channel.setMethodCallHandler(yourCallback) , вам нужно вызвать channel.setMethodCallHandler(null) , когда вы закончите, чтобы избежать утечки вашего обратного вызова.