Обновить
13.43

Flutter *

Фреймворк для кросс-платформенной разработки

Сначала показывать
Порог рейтинга
Уровень сложности

OpenStreetMap в Flutter-проекте: что такое flutter_map, как его внедрить и чем дополнить

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели14K

Всем привет! Меня зовут Анна Ахлёстова, я Flutter-разработчик в Friflex. Ранее мы обсудили, как использовать инструменты yandex_mapkit в Flutter-проекте. В этой статье рассмотрим еще один плагин для работы с картографическими сервисами – flutter_map, изучим его возможности, преимущества перед аналогами и реализуем простой проект в качестве примера.

Если вы начнете искать удобный, адаптированный под Flutter картографический сервис, основными результатами поиска будут GoogleMaps API и Yandex Mapkit SDK.

Их популярность в целом оправдана – они предоставляют обширный список функций: начиная от простого отображения самой карты и объектов на ней и заканчивая функциями геокодирования и навигации. Помимо этого сами карты достаточно точны и детализированы, что немаловажно для конечного пользователя. 

Их главный недостаток – стоимость коммерческих тарифов. Если заказчики обладают достаточным бюджетом для систематической оплаты сервиса карт, проблема автоматически решается. Однако когда разработка ПО осуществляется для небольших организаций или даже стартапов, заказчик может не иметь возможности тратить на это деньги.

В этом случае возможное решение проблемы – использовать бесплатные функции у вышеперечисленных сервисов. При этом придется постоянно следить за соблюдением всех условий бесплатного тарифа, а также не допускать превышения максимального лимита запросов/пользователей.

Для Flutter-проектов есть еще одно решение – применять OpenStreetMap. 

Этот картографический сервис является абсолютно бесплатным для всех пользователей. Создатели заявляют, что все загруженные в него данные доступны каждому пользователю. Подробнее о политике и самом сервисе вы можете почитать здесь.

Читать далее

Размышления о 18 годах работы в Google

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели61K

Деградация культуры Google в конце концов станет необратимой, потому что люди, которые нужны вам в качестве морального компаса - это те же самые люди, которые не приходят в организацию без этого самого морального компаса.

Читать далее

Как добавить Flutter в нативное приложение iOS и протестировать его на Codemagic (Часть 2)

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели1.5K

Hola, Amigos! На связи Саша Чаплыгин, Flutter dev компании заказной разработки Amiga. Нашел интересную статью на английском о том, как добавить Flutter в новый или существующий проект Native iOS. Решил поделиться с вами переводом. Это вторая часть, в которой будет идти речь про реализацию экрана Flutter в приложение для iOS и использование platform channel.

Читать далее

Flutter 3.16: обзор обновления фреймворка с комментариями разработчиков Surf

Уровень сложностиСредний
Время на прочтение14 мин
Охват и читатели5.1K

Привет, на связи команда Flutter-разработчиков Surf. Мы регулярно делимся с сообществом последними новостями о Dart и Flutter, и этот случай — не исключение. Предлагаем перевод официального материала о большом обновлении Flutter 3.16. Дополнили его своими комментариями.

Читать далее

Как добавить Flutter в нативное приложение iOS и протестировать его на Codemagic (Часть 1)

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели2.3K

Hola, Amigos! На связи Саша Чаплыгин, Flutter dev компании заказной разработки Amiga. Нашел интересную статью, решил поделиться переводом. Автор материала рассказывает, как добавить Flutter в новый или существующий проект Native iOS и протестировать его на Codemagic CI/CD с помощью codemagic.yaml.

Читать далее

Анонс Dart 3.2

Время на прочтение6 мин
Охват и читатели5.2K

Улучшены языковые возможности и опыт разработчиков, а также обновлена информация о веб-приложениях и Wasm

Авторы: Kevin Moore & Michael Thomsen

Сегодня мы анонсируем Dart 3.2, в котором появилась новая языковая функция для non-null продвижения приватных конечных полей, улучшен опыт разработчиков за счет новых возможностей взаимодействия, поддержка расширений в DevTools, а также обновлен дорожный план веб-разработки, включающий поддержку Wasm (aka WebAssembly).

Что новенького!

Новый линт в Dart 3.2

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели2.6K

Разбираем новый линт annotate_redeclares и новую конструкцию 'extension type', которая пока доступна в Dart 3.2 под экспериментальным флагом.

Читать далее

Flutter 3.16: что нового

Уровень сложностиСредний
Время на прочтение13 мин
Охват и читатели7.3K

Тема Material 3 по умолчанию, предварительный просмотр Impeller для Android, расширения DevTools и многое другое. Наш Flutter Team Lead Юрий Петров делится первым переводом официального релиза от Google. Давайте посмотрим, что добавили и улучшили во фреймворке за три месяца с момента релиза Flutter 3.13

Читать далее

Простой, но масштабируемый State Management для Flutter

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели6.8K

Библиотека для управления состоянием - то, чем мы пользуемся каждый день.

Чувствуете ли вы легкое покалывание при виде OnRefreshPostsButtonClickedHomeScreenEvent? Возможно, вы используете bloc.

Нет? А сейчас -firstNameUserProfileStateProvider ? Ага, riverpod.

Все еще нет? Тогда, может: Succeeded after 104.6s with 364 outputs (2412 actions)? Все ясно - MobX

"Нужен ли нам еще один State Management", или как я написал библиотеку, с которой снова начал любить Flutter.

Читать далее

Subject объекты в RxDart и чем они полезны Flutter-разработчику

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели4.8K

Dart в совокупности с пакетом Async обладает неплохим функционалом в части работы со стримами. Однако ограничения всё ещё есть. Чтобы сделать стримы более удобными, используется пакет RxDart.

Меня зовут Виталий, я Flutter Team Lead в Surf. Это первая статья в цикле публикаций на тему RxDart.

Читать далее

Как подключиться к Flutter приложению в режиме нативного debug на ОС Аврора

Уровень сложностиСложный
Время на прочтение4 мин
Охват и читатели3.8K

Привет, Хабр! Меня зовут Юрий Петров, я Flutter Team Lead в Friflex и автор ютуб-канала «Юрий Петров | Всё об IT». Мы разрабатываем мобильные приложения для бизнеса и специализируемся на Flutter. А также мы делаем  свой вклад в развитие экосистемы Аврора + Flutter. В этой статье хочу рассказать про то, как можно подключиться к нативной части ОС Авроры для тестирования нативной части Flutter-приложения.

Читать далее

Структура Flutter-приложения: feature-first или layer-first

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели10K

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

Читать далее

«Разгоняем» HashSet, HashMap и циклы на примере Dart

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели6.2K

Если вы занимались профилированием своего приложения, то, глядя на CPU Flame Chart, вероятно, испытывали смесь досады и азарта, глядя на особо «жирный» метод. Досады – что ваша программа всё ещё не идеальна по скорости. Азарт – от того, что вы можете докопаться до причины проблемы и отжать для процессора ещё немного свободного времени на более полезные вычисления. По крайней мере, я регулярно становлюсь жертвой обоих этих чувств, чему данная статья и обязана своим появлением.

Мой кейс – это попытка выжать из игрового движка Flame больше скорости и возможностей, чем он может «из коробки». Гейм-разработка имеет свои особенности по сравнению с «парсингом большого json» или устранением подлагивания при разовом проигрывании анимации, как минимум потому что здесь потенциально объёмные вычисления производятся абсолютно на каждом кадре. Так что, наверное, мой опыт не сильно будет перекликаться с теми проблемами, которые встречает большинство Flutter-разработчиков.

Однако хочу отметить, что описанные здесь подходы могут работать не только для Dart, а вообще для любых языков, особенно высокого уровня – нужно только уточнить детали, как именно в вашем языке реализованы те или иные структуры данных, и исходя из этого выбрать оптимальный метод работы с ними.

Читать далее

Ближайшие события

Управляем навигацией во Flutter с помощью библиотеки auto_route. Часть 1

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели9.8K

Привет, Хабр! Меня зовут Юрий Петров, я Flutter Team Lead в Friflex и автор ютуб-канала «Юрий Петров | Всё об IT». Мы разрабатываем мобильные приложения для бизнеса и специализируемся на Flutter. В этой статье хочу рассказать про библиотеку auto_route, с помощью которой можно управлять навигацией во Flutter.

Читать далее

Flutter VS React Native

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели25K

Многие мобильные компании вкладывают значительные средства, чтобы быть на вершине конкуренции, поскольку технологии развиваются очень быстро. Каждая компания хочет увеличить свои продажи по сравнению с компанией-конкурентом. На рынке электроники появляются новые мобильные телефоны с широкими возможностями и низкими ценами.

Поскольку мобильные телефоны становятся умнее, пользователи также становятся умнее с каждым днем. Каждый клиент перед выбором и покупкой изучает его функции и используемые технологии. Когда дело доходит до разработки ОС Android и iOS, каждая компания задумывается о том, как лучше всего предоставить своим клиентам мобильное приложение с превосходным пользовательским интерфейсом (пользовательский интерфейс) и выдающимся UX (пользовательский опыт). Компании стараются предоставлять приложения, совместимые с несколькими платформами и позволяющие быстрее разрабатывать их в одном месте. Затем на место приходят Flutter и RN (React Native). Оба являются кроссплатформенными платформами для разработки мобильных приложений.

Читать далее

Padding vs SizedBox. Что выбрать для вёрстки отступов Column и Row

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели5.7K

Здравы будьте! С вами на связи руководитель Flutter-направления Mad Brains Николай Омётов. В этой статье я проведу разбор особенностей вёрстки отступов с помощью Padding и SizedBox и расскажу, что выбрала наша команда для создания единого стиля кода.

Читать далее

Как использовать нативный платежный сервис SberPay в кроссплатформенном приложении на Flutter

Уровень сложностиСредний
Время на прочтение23 мин
Охват и читатели11K

Всем привет! Это Мурат Насиров и Артем Баркалов, мы Flutter-разработчики в Friflex. Разрабатываем высоконагруженные мобильные приложения для бизнеса и специализируемся на Flutter. В этой статье мы собрали большую часть кейсов, с которыми вы можете столкнуться при интеграции кнопки оплаты SberPay в приложении на Flutter. Это поможет вам понять механику работы СберПэй и шаги, которые необходимо сделать для передачи событий из натива во Flutter.

Использование SberPay SDK в продакшене требует наличия установленного приложения «Сбербанк Онлайн» (СБОЛ), иначе в процессе оплаты произойдет ошибка. Тестирование можно проводить на симуляторе iOS и на реальном устройстве. На эмуляторе Android тестирование не выйдет — при попытке оплаты возникает ошибка. Разработчики SDK используют аппаратные возможности смартфонов: геолокацию, bluetooth, Wi-Fi для снижения вероятности совершения мошеннических операций (условный антифрод).

Первым делом разработчик узнает от Сбербанка (по договору о подключении SberPay SDK в приложение), логин/пароль (credentials) и ссылку, которые указываются в файле build.gradle проекта (приложения) в части Android для получения библиотеки. Либо отдельно запрашивается aar-бандл. Для подключения SDK на iOS выдадут отдельную ссылку на репозиторий, хотя он публичный

Вместе с данными для получения SDK выдают тестовые данные для регистрации заказа в шлюзе Сбера, а также специальные apiKey и merchantLogin, которые используются для инициализации SberPay SDK в вашем приложении. Тестовые данные не подходят для проверки списания реальных денежных средств с реальной карты, они исключительно для тестирования.

Читать далее

Flutter. Локальная база данных

Время на прочтение7 мин
Охват и читатели14K

Ранее мы писали статью про реализацию паттерна MVVM на Флаттере. В комментариях к ней просили разобрать связку нашего приложения с базой данных. 

Стоит заметить, что локальная БД в данном случае будет использоваться для кеширования данных, получаемых с бэкенда, однако взаимодействие с бэком не будет рассматриваться здесь, так как это тема, достойная отдельной статьи.

Меня зовут Ричард, и я младший разработчик в компании Digital Design.

Здесь будет разобрана конкретная реализация, однако я постараюсь использовать максимально общий язык для описания происходящего.

Читать далее

Flutter и работа с нативным кодом на примере библиотеки для работы с NFC

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели3.8K

Как исправлять недочеты в нативных библиотеках при работе с флаттером на примере NFC

В большинстве случаев при работе с флаттером разработчику никак не приходится взаимодействовать с нативным кодом (Java/Kotlin и ObjectiveC/Swift), потому что инструментарий флаттера довольно богат. Но иногда возникают случаи, когда без этого не обойтись. Самым частым примером является работа с датчиками телефона.

Рассмотрим проблему: представим что вам нужно сделать чтение данных карты с NFC. Вы выбрали плагин, в нашем случае это был nfc_manager 3.1.0, который позволяет это делать, но на android из него не возвращается номер карты, который вам необходим. Что делать? С такой проблемой мы недавно столкнулись и сейчас расскажем как это решается.

Для решения данной проблемы нужно выполнить несколько шагов.

Во-первых необходимо скопировать код библиотеки к себе в проект. Должно получиться так:

Читать далее

Flutter Yandex Mapkit: как внедрить основные инструменты Яндекс Карт в проект на Flutter. Часть 2

Уровень сложностиСредний
Время на прочтение26 мин
Охват и читатели13K

Привет! Меня зовут Анна Ахлёстова, я Flutter-разработчик в Friflex. В первой части статьи мы подробно разобрали, как использовать некоторые инструменты Yandex Mapkit в проекте на Flutter. Мы научились отображать объекты точками на карте, обрабатывать нажатия на них, а также настраивать кластеризацию маркеров при масштабировании карты.

В этой части статьи мы на простом примере научимся определять местоположение пользователя и отображать его точкой на карте без использования сторонних библиотек геопозиционирования, а также разберем, как выделять зоны на карте и как строить дорожные маршруты от точки А до точки Б средствами Yandex MapKit.

Читать далее