> Как реализовать работу в фоне во Flutter для отправки данных при возобновлении связи (Flutter, Android)

Уровень: senior · Роль: mobile · Категория: Технические вопросы

Компании: PashaPay

Стек: Flutter, Android

> Пример ответа

Для реализации отправки данных в фоне при возобновлении связи во Flutter используйте комбинацию workmanager (или flutter_background_service) и мониторинга состояния сети через connectivity_plus.

  1. Мониторинг сети - подпишитесь на изменения соединения:
import 'package:connectivity_plus/connectivity_plus.dart';

Connectivity().onConnectivityChanged.listen((result) {
  if (result != ConnectivityResult.none) {
    // Связь появилась - запускаем фоновую задачу
    _sendPendingData();
  }
});
  1. Фоновая отправка - используйте workmanager для выполнения задачи даже при закрытом приложении:
import 'package:workmanager/workmanager.dart';

void callbackDispatcher() {
  Workmanager().executeTask((task, inputData) async {
    // Отправка данных из локального хранилища (например, Hive или SQLite)
    await sendPendingRequests();
    return Future.value(true);
  });
}

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  Workmanager().initialize(callbackDispatcher);
  runApp(MyApp());
}
  1. Периодическая проверка - зарегистрируйте задачу для повторения:
Workmanager().registerPeriodicTask(
  "sendPendingData",
  "sendPendingDataTask",
  frequency: Duration(minutes: 15), // Минимальный интервал - 15 минут
  constraints: Constraints(networkType: NetworkType.connected),
);
  1. Обработка в foreground - если приложение активно, используйте flutter_background_service для длительных операций без прерывания.

Важно: На Android 12+ и iOS требуются дополнительные разрешения (например, REQUEST_IGNORE_BATTERY_OPTIMIZATIONS на Android). Для мгновенной отправки при появлении сети лучше комбинировать connectivity_plus с workmanager в качестве fallback.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью