Анонс Flutter digest: Карты, темы и дизайн

Nikolai Rubanov (Darksa)
Заметки про Evrone
2 min readMar 30, 2023

В этом выпуске мы декодируем строку полилинии и узнаем, что можно использовать в качестве замены Google Maps. Также расскажем о кастомных темах и создании границы элементов с разной шириной сторон.

Любой маршрут на карте Google Maps — это последовательность координат точек, соединённых между собой. Проблема лишь в том, что точные координаты будут занимать много места, а соответственно и трафика. Оптимизировать это можно, применив алгоритм кодирования полилиний. Суть алгоритма в том, чтобы задать точные координаты только первой точки, а далее использовать смещения от предыдущей. Смещения можно закодировать в виде ASCII-символов и тем самым существенно сэкономить место. Реализация алгоритма кодирования имеет потери, но обеспечивает разумную точность.

Продолжая тему картографии отметим, что многие разработчики недолюбливают работать с картами Google во Flutter. На StackOverflow и Reddit эпизодически возникают соответствующие обсуждения. Полезной альтернативой, в этом случае, становятся карты некоммерческого проекта OpenStreetMap (OSM). Участники поставили себе цель создать и поддерживать свободную и бесплатную географическую карту мира. Интегрировать OSM в приложение на Flutter можно с помощью плагина flutter_polyline_points_wrapper.

Создание персональной темы для приложения может быть сложным делом. Её стоит рассматривать, как набор цветов и свойств для элементов пользовательского интерфейса. Пользователи привыкли к тому, что выбранная ими системная тема влияет на все приложения. По умолчанию для всех приложений Flutter используется светлая тема. Но в то же время, в нём есть и значения для тёмной темы. Так что если нужно создать пользовательскую тему, то потребуется переопределить некоторые значения.

Flutter предоставляет различные способы оформления границ элементов, такие как BoxDecoration, PhysicalModel и Material. Проблема лишь в том, что все они воспринимают границу, как единый элемент, имеющий общую ширину. Если же нужно создать границу с разной шириной сторон, то можно использовать сторонний пакет Non-Uniform Border. Этот пакет предоставляет кастомный класс границы и может быть полезен, если требуется неоднородный стиль границ.

Подробности вы найдёте в полной версии нашего дайджеста.

--

--