Экосистема и пакеты Tracelet
Tracelet построен с использованием Федеративной архитектуры плагинов. Вместо того, чтобы навязывать вашему приложению массивную монолитную зависимость, Tracelet разделен на несколько модульных пакетов. Это гарантирует, что размер вашего приложения останется небольшим, вы предоставите только те собственные разрешения и код, которые вам действительно нужны, а внутренняя логика останется полностью отделенной от отслеживания местоположения.
Ниже приведен обзор каждого пакета в экосистеме Tracelet и его функций.
Основные пакеты
Эти пакеты являются основой Tracelet. Большинству приложений потребуется напрямую взаимодействовать только с основным пакетом tracelet.
НЕ ПЕРЕВОДИТЬ
Это основной пакет внешнего интерфейса, который вы добавляете в pubspec.yaml. Он предоставляет основной API Dart (Tracelet.start(), Tracelet.ready()), объекты конфигурации (Config.balanced()) и обрабатывает привязки Dart к Rust.
НЕ ПЕРЕВОДИТЬ
Абстрактный общий интерфейс, который соединяет внешний пакет tracelet с базовыми собственными платформами. Вы никогда не будете взаимодействовать с этим напрямую, но это гарантирует, что все платформы будут соответствовать одним и тем же методам и типам возвращаемых данных.
tracelet_android, tracelet_ios и tracelet_web
Это реализации для конкретной платформы. Когда вы устанавливаете tracelet, Flutter автоматически подключает эти пакеты платформы.
tracelet_androidсодержит оболочки Kotlin и логику фоновой службы Android.tracelet_iosсодержит оболочки Swift и логикуCLLocationManager.
Сетевые адаптеры и адаптеры синхронизации
Tracelet строго отделяет «Отслеживание местоположения» от «Сетевой синхронизации». Если вы хотите создать собственную логику повторных попыток HTTP вручную внутри onLocation, вам никогда не придется устанавливать их. Но если вам нужна автоматическая автономная синхронизация с экономией заряда батареи, используйте адаптер.
НЕ ПЕРЕВОДИТЬ
Основной собственный сетевой механизм. Он предоставляет API TraceletSync. Вместо того, чтобы активировать движок Dart для отправки HTTP-запросов, он запускает собственный WorkManager (Android) или BGTask (iOS) для автоматического сброса местоположений SQLite в ваш HTTP-сервер, даже если ваше приложение принудительно закрыто.
НЕ ПЕРЕВОДИТЬ
Готовый адаптер для Supabase . Он указывает встроенному механизму синхронизации HTTP Tracelet на RPC-функцию Supabase Postgres (или Edge Function), устанавливает для вас заголовки apikey/Authorization и обновляет токен сеанса Supabase в фоновом режиме, поэтому синхронизация продолжает работать, когда приложение завершается.
НЕ ПЕРЕВОДИТЬ
Предварительно созданный адаптер для базы данных Firebase Realtime (RTDB) . Он указывает встроенному механизму синхронизации HTTP Tracelet на REST API RTDB — 100 % бессерверный, без облачных функций — и обновляет токен идентификатора аутентификации Firebase в фоновом режиме, поэтому синхронизация продолжает работать после закрытия приложения.
Инструменты диагностики и отладки
НЕ ПЕРЕВОДИТЬ
Встраиваемый пакет наложения пользовательского интерфейса для разработчиков. Добавьте его как зависимость от разработки (flutter pub add dev:tracelet_doctor), а не как обычную зависимость — Flutter исключает пакеты, зависящие от разработки, из сборок выпуска, поэтому они автоматически удаляются из того, что вы поставляете. Добавив tracelet_doctor в свое приложение во время тестирования, вы получите красивое диагностическое наложение, которое отображает:
- Кольца точности GPS в реальном времени
- Текущее состояние движения (СТАЦИОНАРНЫЙ или ДВИЖУЩИЙСЯ)
- Подсчет строк собственной базы данных SQLite
- Основная причина разрядки аккумулятора
Настоятельно рекомендуется использовать tracelet_doctor во время контроля качества и тестирования. Держите его под dev_dependencies и оберегайте использование kDebugMode, чтобы исключить его из ваших сборок релизов.