Мы начали работать с Flutter с первой beta-версии и реализовали на нем десятки успешных проектов. Наша команда обожает Flutter и знает, как использовать его возможности на полную.
В этом канале мы будем делиться свежими обновлениями, плагинами, пакетами, реальными примерами ошибок и их решений, советами по интеграции с платформами и работой с API, UI/UX решениями и новостями из мира Flutter.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8❤3👍3🤩2
Привет, это Анна, Team Lead Flutter-команды Friflex
Сегодня открываю месяц навигации на этом канале — весь октябрь вместе с коллегами буду делиться опытом интеграции карт в мобильные приложения. Начну с Яндекс Карт.
Чтобы подключить Яндекс Карты к приложению на Flutter, установим плагин yandex_mapkit. Это можно сделать в три шага:
Шаг 1. Подготавливаем и добавляем зависимости в pubspec.yaml
Выполняем команду flutter pub get
Шаг 2. Настраиваем Yandex MapKit на Android
1. Открываем файл android/build.gradle и указываем вариант нативной библиотеки full/lite:
2. В файле MainApplication.java или MainApplication.kt указываем локализацию и ключ API:
3. В файле AndroidManifest.xml указываем разрешения:
Шаг 3. Настраиваем Yandex MapKit на iOS
1. Открываем файл AppDelegate.swift и указываем локализацию и API ключ:
2. В файле Podfile раскомментируем строку platform :ios, '12.0' и здесь же добавляем конфигурацию нативной библиотеки full/lite:
Готово, все зависимости настроены. Можно начинать писать код для отображения карты, но об этом я расскажу в следующий раз 🤞
#howtoflutter
Сегодня открываю месяц навигации на этом канале — весь октябрь вместе с коллегами буду делиться опытом интеграции карт в мобильные приложения. Начну с Яндекс Карт.
Чтобы подключить Яндекс Карты к приложению на Flutter, установим плагин yandex_mapkit. Это можно сделать в три шага:
Шаг 1. Подготавливаем и добавляем зависимости в pubspec.yaml
flutter:
sdk: flutter
yandex_mapkit: ^4.1.0
Выполняем команду flutter pub get
Шаг 2. Настраиваем Yandex MapKit на Android
1. Открываем файл android/build.gradle и указываем вариант нативной библиотеки full/lite:
yandexMapkit.variant=<YOUR_DESIRED_VARIANT>
2. В файле MainApplication.java или MainApplication.kt указываем локализацию и ключ API:
MapKitFactory.setLocale("YOUR_LOCALE");
MapKitFactory.setApiKey("YOUR_API_KEY");
3. В файле AndroidManifest.xml указываем разрешения:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
Шаг 3. Настраиваем Yandex MapKit на iOS
1. Открываем файл AppDelegate.swift и указываем локализацию и API ключ:
YMKMapKit.setApiKey("YOUR_API_KEY")
2. В файле Podfile раскомментируем строку platform :ios, '12.0' и здесь же добавляем конфигурацию нативной библиотеки full/lite:
ENV['YANDEX_MAPKIT_VARIANT'] = '<YOUR_DESIRED_VARIANT>'
Готово, все зависимости настроены. Можно начинать писать код для отображения карты, но об этом я расскажу в следующий раз 🤞
#howtoflutter
❤8🔥5👍2
Media is too big
VIEW IN TELEGRAM
Привет, это Юра, Tech Lead Flutter-команды Friflex
Меня часто спрашивают, как настроить и установить Flutter Aurora. А вот так!
Записал полную инструкцию. Сегодня подробно покажу, как установить Aurora SDK.
🔗 Скачать Aurora SDK
Что делать дальше, смотрите в следующем выпуске.
#howtoflutter
Меня часто спрашивают, как настроить и установить Flutter Aurora. А вот так!
Записал полную инструкцию. Сегодня подробно покажу, как установить Aurora SDK.
Что делать дальше, смотрите в следующем выпуске.
#howtoflutter
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥4
This media is not supported in your browser
VIEW IN TELEGRAM
Cегодня — день интернета в России! Надеемся, у вас достаточно стабильное соединение, чтобы сохранить эти 10 классных пакетов для работы с интернетом:
1. http
Простой и популярный пакет для выполнения HTTP-запросов (GET, POST и других). Отлично подходит для базовых задач, таких как загрузка данных с API или отправка форм.
🔗 http на pub.dev
2. dio
Мощный пакет для HTTP-запросов: с перехватчиками, отменой запросов и управлением тайм-аутами.
🔗 dio на pub.dev
3. graphql_flutter
Идеальное решение для интеграции GraphQL-запросов в приложение, если ваш бекэнд работает с GraphQL.
🔗 graphql_flutter на pub.dev
4. connectivity_plus
Пакет для мониторинга состояния сети. Поможет отслеживать тип подключения (Wi-Fi, мобильные данные) и доступ в интернет.
🔗 connectivity_plus на pub.dev
5. flutter_cache_manager
Этот пакет помогает управлять кэшированием файлов и данных.
🔗 flutter_cache_manager на pub.dev
6. web_socket_channel
Пакет для работы с WebSocket-соединениями. Идеально подходит для реального времени, например, в чатах или системах уведомлений.
🔗 web_socket_channel на pub.dev
7. retrofit
Клиент REST API, вдохновленный популярным библиотекой Retrofit из мира Android. Помогает сократить количество шаблонного кода.
🔗 retrofit на pub.dev
8. flutter_downloader
Этот пакет упрощает скачивание и отображение прогресса. Хорошая штука, если в приложении нужно загружать файлы.
🔗 flutter_downloader на pub.dev
9. firebase_storage
Пакет для интеграции с Firebase и хранения медиафайлов в облаке. Идеальный вариант, если ваш основной бэкенд — это Firebase.
🔗 firebase_storage на pub.dev
10. flutter_inappwebview
Пакет для работы с веб-контентом. Будет очень полезен, если вы собираетесь внедрить WebView или использовать встроенный браузер.
🔗 flutter_inappwebview на pub.dev
Всем быстрого интернета💜
1. http
Простой и популярный пакет для выполнения HTTP-запросов (GET, POST и других). Отлично подходит для базовых задач, таких как загрузка данных с API или отправка форм.
2. dio
Мощный пакет для HTTP-запросов: с перехватчиками, отменой запросов и управлением тайм-аутами.
3. graphql_flutter
Идеальное решение для интеграции GraphQL-запросов в приложение, если ваш бекэнд работает с GraphQL.
4. connectivity_plus
Пакет для мониторинга состояния сети. Поможет отслеживать тип подключения (Wi-Fi, мобильные данные) и доступ в интернет.
5. flutter_cache_manager
Этот пакет помогает управлять кэшированием файлов и данных.
6. web_socket_channel
Пакет для работы с WebSocket-соединениями. Идеально подходит для реального времени, например, в чатах или системах уведомлений.
7. retrofit
Клиент REST API, вдохновленный популярным библиотекой Retrofit из мира Android. Помогает сократить количество шаблонного кода.
8. flutter_downloader
Этот пакет упрощает скачивание и отображение прогресса. Хорошая штука, если в приложении нужно загружать файлы.
9. firebase_storage
Пакет для интеграции с Firebase и хранения медиафайлов в облаке. Идеальный вариант, если ваш основной бэкенд — это Firebase.
10. flutter_inappwebview
Пакет для работы с веб-контентом. Будет очень полезен, если вы собираетесь внедрить WebView или использовать встроенный браузер.
Всем быстрого интернета
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6🔥3👍2
Привет, это Анна, Team Lead Flutter-команды Friflex
Продолжаю рассказывать, как интегрировать карты в мобильные приложения. Сегодня разберемся, как создать список точек, которые будут отображаться маркерами на карте
Используем класс
🔴 icon принимает экземпляр PlacemarkIcon, который позволяет создавать простые и составные иконки
🔴 text дает возможность отображать кастомный текст на маркере
🔴 onTap и onDrag задают взаимодействия с маркером
Создадим список точек Point, которые необходимо отобразить маркерами на карте:
Для каждой отдельной точки создаем экземпляр маркера
Список объектов готов. В следующий раз расскажу, как отобразить их на карте.
#howtoflutter
Продолжаю рассказывать, как интегрировать карты в мобильные приложения. Сегодня разберемся, как создать список точек, которые будут отображаться маркерами на карте
yandex_mapkit. Используем класс
PlacemarkMapObject. Он принимает разные параметры, которые помогают создать уникальный дизайн маркера и настроить нужные пользовательские взаимодействия:Создадим список точек Point, которые необходимо отобразить маркерами на карте:
List<Point> get points {
return const [
Point(latitude: 55.755864, longitude: 37.617698),
Point(latitude: 51.507351, longitude: -0.127696),
Point(latitude: 41.887064, longitude: 12.504809),
];
}
Для каждой отдельной точки создаем экземпляр маркера
PlacemarkMapObject.
List<PlacemarkMapObject> get mapObjects => List.generate(
points.length,
(index) => PlacemarkMapObject(
mapId: MapObjectId('MapObject $index'),
point: points[index],
opacity: 1,
text: PlacemarkText(
text: '$index',
style: const PlacemarkTextStyle(size: 14, color: Colors.white),
),
icon: PlacemarkIcon.single(
PlacemarkIconStyle(
image: BitmapDenoscriptor.fromAssetImage('assets/icons/map_point.png'),
scale: 2,
),
),
onTap: (mapObject, point) {
// действие при нажатии на маркер
},
onDrag: (mapObject, point) {
// действие при перетягивании маркера
},
),
);
Список объектов готов. В следующий раз расскажу, как отобразить их на карте.
#howtoflutter
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6❤3🤩2
Media is too big
VIEW IN TELEGRAM
Юра, Tech Lead Flutter-команды Friflex, вновь на связи!
Как установить Aurora SDK, я уже рассказал. Переходим к настройке эмулятора для Flutter. Просто, как дважды с два, с этой видеоинструкцией🖱
Как установить Aurora SDK, я уже рассказал. Переходим к настройке эмулятора для Flutter. Просто, как дважды с два, с этой видеоинструкцией
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4🔥4👍2🤩1
Какой канал про Flutter без рубрики #пакет_недели, подумали мы, и вот первый выпуск!
Сегодня рассказываем про Skeletonizer. Этот пакет позволяет создавать скелетоны — упрощенные версии интерфейса, которые пользователь видит, пока контент загружается.
Главное про Skeletonizer:
🔸 Он автоматически создает скелетоны. Пакет анализирует дерево виджетов и формирует анимацию загрузки, повторяя их форму, размеры и расположение.
🔸 Он поддерживает кастомизацию. Skeletonizer позволяет настроить анимацию, цвет и форму скелетона.
🔸 Его легко интегрировать. Можно просто обернуть виджет в Skeletonizer и сразу получить эффект анимации.
🔸 Он поддерживает большинство стандартных виджетов. Например, Container, Text, или ListView.
Как использовать
Создадим анимацию загрузки для карточки профиля:
По умолчанию Skeletonizer создает анимацию, похожую на движущийся светлый блик по заливке виджета. Но ее можно кастомизировать с помощью разных параметров:
Например:
Режим скелетона можно включать и выключать в зависимости от состояния загрузки данных:
❗️ Если виджетов много, Skeletonizer может привести к проблемам с производительностью, особенно на слабых устройствах.
🔥— попробуем красивые скелеты Skeletonizer
🙅— вставим из старых проектов
Сегодня рассказываем про Skeletonizer. Этот пакет позволяет создавать скелетоны — упрощенные версии интерфейса, которые пользователь видит, пока контент загружается.
Главное про Skeletonizer:
Как использовать
Создадим анимацию загрузки для карточки профиля:
import 'package:flutter/material.dart';
import 'package:skeletonizer/skeletonizer.dart';
class ProfileSkeletonDemo extends StatelessWidget {
final bool isLoading = true;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(noscript: Text('Skeleton Profile Example')),
body: Center(
child: Skeletonizer(
enabled: isLoading,
child: Card(
child: ListTile(
leading: CircleAvatar(radius: 30),
noscript: Text('John Doe'),
subnoscript: Text('Flutter Developer'),
),
),
),
),
);
}
}
void main() => runApp(MaterialApp(home: ProfileSkeletonDemo()));
По умолчанию Skeletonizer создает анимацию, похожую на движущийся светлый блик по заливке виджета. Но ее можно кастомизировать с помощью разных параметров:
backgroundColor: задает основной цвет скелетона.highlightColor: задает цвет блика.duration: продолжительность одного цикла анимации.borderRadius: радиус закругления углов. Например:
Skeletonizer(
enabled: true,
duration: Duration(seconds: 1), // Продолжительность анимации
backgroundColor: Colors.grey[200], // Цвет фона скелетона
highlightColor: Colors.grey[100], // Цвет анимированной заливки
child: YourWidget(),
);
Режим скелетона можно включать и выключать в зависимости от состояния загрузки данных:
Skeletonizer(
enabled: isLoading, // Условие включения скелетона
child: isLoading ? Placeholder() : ContentWidget(),
);
🔥— попробуем красивые скелеты Skeletonizer
🙅— вставим из старых проектов
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍3🤩2
Привет, это Анна, Team Lead Flutter-команды Friflex
Я уже рассказала, как подключить библиотеку
Библиотека
YandexMap нужно поместить на страницу, где должна находиться карта. Настройки в YandexMap позволяют управлять внешним видом карты и ее функциями. Вот некоторые из них:
1️⃣
2️⃣
3️⃣
4️⃣
Чтобы отобразить маркеры объектов на карте, нужно передать их список в поле
Готово! В следующий раз рассмотрим, как и зачем использовать кластеризацию объектов.
#howtoflutter
Я уже рассказала, как подключить библиотеку
yandex_mapkit, чтобы внедрить карту в мобильное приложение, и как создать список точек, которые будут отображаться маркерами на карте.Библиотека
yandex_mapkit предлагает виджет карты, YandexMap, и разные инструменты для работы с ней. Сегодня покажу, как отобразить карту и добавить маркеры объектов на нее.YandexMap нужно поместить на страницу, где должна находиться карта. Настройки в YandexMap позволяют управлять внешним видом карты и ее функциями. Вот некоторые из них:
nightModeEnabled включает темную темуzoomGesturesEnabled разрешает масштабировать картуonCameraPositionChanged обрабатывает перемещения положения картыonUserLocationAdded позволяет получить местоположение пользователя Чтобы отобразить маркеры объектов на карте, нужно передать их список в поле
mapObjects виджета YandexMap. YandexMap(
mapObjects: mapObjects,
zoomGesturesEnabled: true,
nightModeEnabled: true,
onMapCreated: (controller) {
// действие при создании карты
},
onCameraPositionChanged: (cameraPosition, reason, finished) {
// действие при изменении положения камеры
},
onUserLocationAdded: (view) {
// действие при определении местоположения пользователя средствами Яндекс карты
},
),
Готово! В следующий раз рассмотрим, как и зачем использовать кластеризацию объектов.
#howtoflutter
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5🔥3👍2
Media is too big
VIEW IN TELEGRAM
Переходим к установке и настройке Aurora-CLI
На связи Юра, Tech Lead Flutter-команды Friflex, с подробной инструкцией, как это сделать.
📎 Как установить Aurora SDK
📎 Как настроить эмулятор для Flutter
На связи Юра, Tech Lead Flutter-команды Friflex, с подробной инструкцией, как это сделать.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥5❤3
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6❤3👍3
Привет, это Анна, Team Lead Flutter-команды Friflex
Это четвертый пост из серии о том, как интегрировать карты в мобильные приложения. В прошлый раз я рассказывала, как отобразить маркеры объектов на карте. Сегодня поговорим про кластеризацию объектов.
Иногда маркеры расположены слишком близко и при масштабировании карты наслаиваются друг на друга. При нажатии на один маркер в этом случае может вызываться обработчик из соседнего. Решить эти проблемы поможет кластеризация маркеров.
Кластеры — это объекты карты, которые позволяют при уменьшении масштаба объединить близлежащие маркеры в один объект и отобразить количество объединенных точек.
Для реализации кластеризации в
🔴 mapId — уникальный идентификатор объекта
🔴 placemarks — список маркеров, которые в случае изменения масштаба объединяются в кластеры
🔴 radius — минимальное расстояние между точками на карте, которые остаются разделенными и не входят в кластеры
🔴 minZoom — минимальный уровень масштабирования, при котором отображаются кластеры
Изменить внешний вид кластера можно через обратный вызов
Класс
Чтобы изменить внешний вид в
Параметр
Чтобы отобразить маркеры с кластеризацией на карте, объект
В следующий раз разберем, как управлять стилизацией карты и менять внешний вид внутренних объектов: дорог, ландшафтных зон, мест общего пользования.
#howtoflutter
Это четвертый пост из серии о том, как интегрировать карты в мобильные приложения. В прошлый раз я рассказывала, как отобразить маркеры объектов на карте. Сегодня поговорим про кластеризацию объектов.
Иногда маркеры расположены слишком близко и при масштабировании карты наслаиваются друг на друга. При нажатии на один маркер в этом случае может вызываться обработчик из соседнего. Решить эти проблемы поможет кластеризация маркеров.
Кластеры — это объекты карты, которые позволяют при уменьшении масштаба объединить близлежащие маркеры в один объект и отобразить количество объединенных точек.
Для реализации кластеризации в
yandex_mapkit существует специальный класс — ClusterizedPlacemarkCollection. У него есть обязательные параметры:Изменить внешний вид кластера можно через обратный вызов
onClusterAdded(). Он вызывается каждый раз, когда после изменения масштаба карты создаются новые кластеры или удаляются старые.Cluster — объект кластера, который хранит в себе данные об объединенных маркерах, их количестве и своем внешнем виде.Класс
Cluster реализует метод copyWith(), который обеспечивает иммутабельность текущему объекту кластера. С помощью этого метода можно вернуть новый экземпляр класса. От текущего он будет отличаться параметрами, которые заданы в copyWith().Чтобы изменить внешний вид в
onClusterAdded(), нужно вернуть экземпляр Cluster с измененным через copyWith() параметром appearance. Параметр
appearance типизирован как PlacemarkMapObject, поэтому принцип построения иконки и внешнего вида у кластера такой же, как у обычного маркера.Чтобы отобразить маркеры с кластеризацией на карте, объект
ClusterizedPlacemarkCollection нужно передать в поле mapObjects виджета YandexMap.В следующий раз разберем, как управлять стилизацией карты и менять внешний вид внутренних объектов: дорог, ландшафтных зон, мест общего пользования.
#howtoflutter
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8❤3👍2
Рассказали в блоге на Хабре про самые важные пакеты в экосистеме Dart и Flutter и как вообще оценивается их важность. Давайте обсудим 💬
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Самые важные пакеты в экосистеме Dart и Flutter на Pub 2024
Компания Very Good Ventures провела исследование и опубликовала рейтинг самых важных пакетов в экосистеме Dart и Flutter. Рассказываем, какие пакеты вошли в топ — от независимых разработчиков,...
🔥6❤3👍2
Media is too big
VIEW IN TELEGRAM
Продолжаем устанавливать Flutter Aurora вместе с Юрой, Tech Lead Flutter-команды Friflex.
📎 Как установить Aurora SDK
📎 Как настроить эмулятор для Flutter
📎 Как установить и настроить Aurora-CLI
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5🔥5👍3👎1