Есть ли недостаток в том, чтобы не делать MethodChannels stati c const во Flutter? - PullRequest
0 голосов
/ 05 февраля 2020

Примеры в документах Flutter имеют используемый ими метод MethodChannel (для связи с собственным хостом), объявленный как static const, непосредственно в виджете, который его использует. Чтобы внести в него некоторое разделение, я пытаюсь расположить свое приложение так, чтобы MethodChannel

  1. находился в BLoC или даже в базовом слое службы, а не непосредственно в виджете, и
  2. , чтобы все легко тестировалось модулем.

Это проблема (связанная с производительностью, вызывающая ошибки и т. Д. c.), Если MethodChannel не static и const?

1 Ответ

1 голос
/ 07 февраля 2020

Экземпляр MethodChannel, в котором он определен, - const по соглашению, и, честно говоря, у него нет особых причин этого не делать. Однако, хотя типичная реализация имеет канал, определенный в классе обслуживания, это не обязательно. Вы также можете легко определить его в другом месте и затем передать его в свой класс обслуживания с помощью внедрения зависимостей.

Файл инициализации DI

const platform = MethodChannel(...);

void initDI() {
  GetIt.I.registerSingleton(platform, "MyMethodChannel");
}

Файл службы

class PlatformService {
  final MethodChannel platform;

  PlatformService()
    : platform = GetIt().I.get("MyMethodChannel");

  ...
}
...