Возможно ли запускать код dart в службе Android для конкретной платформы с помощью Flutter?

#android #flutter #dart

#Android #flutter #dart

Вопрос:

У меня есть библиотека Flutter, которая хорошо работает в Flutter main.dart, но мне нужно использовать ее в службах Android для запуска в фоновом режиме.

Поскольку Flutter еще не поддерживает службы поддержки (насколько я знаю), поэтому я создаю собственную службу Android с использованием Java и запускаю ее с помощью MethodChannel. Но я не знаю, как использовать библиотеку Flutter внутри моей службы.

Так можно ли использовать библиотеку Flutter внутри службы Android или мне нужно преобразовать библиотеку в код Java?

Я уже исследовал изоляцию, фоновые процессы и геозоны, но они не на 100% совпадают с сервисом.

Обновить

На самом деле, после открытия службы переднего плана Android будет поддерживать работу приложения в фоновом режиме. Итак, откройте службу и отобразите уведомление — это все, что мне нужно сделать, не нужно добавлять больше кода в службу.

Ответ №1:

Это возможно с помощью MethodChannel , но вместо вызова из dart и обработки его на родной платформе, вы должны обрабатывать вызовы в dart и вызывать с родной платформы. В dart у вас будет что-то вроде этого:

 MethodChannel _methodChannel = MethodChannel('bridge');
_methodChannel.setMethodCallHandler((call) {
  doSomething();
});
  

И в вашем сервисе на платформе Android вы будете вызывать метод на том же канале:

 MethodChannel(flutterEngine.dartExecutor.binaryMessenger, 'bridge').invokeMethod('method', argument)