Обновить
17.75

Flutter *

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

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

Как я делал трекер парковки для людей

Время на прочтение6 мин
Охват и читатели12K
Недавно меня опять заклампили. Я живу в Европе, и здесь вместо штрафов за неправильную парковку и эвакуаторов “клампят” — заковывают колесо твоего автомобиля в цепи. Чтобы выбраться, нужно звонить по телефону, платить круглую сумму и ждать мужика с ключами, который снимет цепь. Это долго, унизительно и порой (зависит от района) грабительски дорого.

В тот день я опоздал везде. Ожидая звенящего ключами работника, я размышлял, насколько глупо попался. Забегался, оставил машину на полчаса вместо максимальных бесплатных 20 минут — ровно на 21-й минуте и попался. Не повезло, полосатый фургончик парковщиков стоял недалеко, и они моментально среагировали. Ловили меня и до этого, по разным причинам: забывал, истекал оплаченный срок, а иногда и просто не мог найти свою машину в лабиринте улиц.

“Для всего должно быть приложение” — подумал я и начал копаться в апп сторе. После вороха сомнительных результатов у меня поубавилось уверенности, и я решил уточнить: “для всего должно быть приложение на андроид”. После чего нашел свой хуавей и полез в недра плей стора. Оттуда на меня высыпалось еще больше мусора, и я, утопая в корявых поделках, плюнул. Либо я ищу как-то не так, либо не существует удобного и понятного трекера парковки. Вывод простой: если у нас чего-то нет, давайте сделаем это сами.

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

image
Читать дальше →

Getters и Setters в Dart и Flutter

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

Getters и Setters в Dart и Flutter.


Как и во многих других языках getters\setters это методы которые дают доступ на чтение\запись свойств объекта.


В статье рассмотрим простые примеры и запустим их на выполнение в dartpad.


Читать дальше →

Flutter в примерах. Deep Links в приложениях на Flutter

Время на прочтение9 мин
Охват и читатели24K
Новый мультиплатформенный фреймворк от Google – Flutter – уверенно набирает поклонников. Все больше людей интересуются этой технологией и пробуют ее как в pet-, так и в коммерческих проектах. Все больше статей и примеров появляется в рунете, но какое-то время назад я обратил внимание, что, в отличие от Medium, на Хабре в основном преобладают обзорные статьи, посвященные технологии в целом и ее преимуществам или новинкам представленным в последней версии. Текстов, посвященных конкретным кейсам, достаточно мало. Поэтому я решил, что нужно исправлять сложившуюся ситуацию. Начну не с самого распространенного кейса, но достаточно часто используемого – Deep Links.
image
Читать дальше →

Деплоим ML проект, используя Flask как REST API, и делаем доступным через приложение на Flutter

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


Введение


Машинное обучение уже везде и, пожалуй, почти невозможно найти софт, не использующий его прямо или косвенно. Давайте создадим небольшое приложение, способное загружать изображения на сервер для последующего распознавания с помощью ML. А после сделаем их доступными через мобильное приложение с текстовым поиском по содержимому.


Мы будем использовать Flask для нашего REST API, Flutter для мобильного приложения и Keras для машинного обучения. В качестве базы данных для хранения информации о содержимом изображений используем MongoDB, а для получения информации возьмём уже натренированную модель ResNet50. При необходимости мы сможем заменить модель, используя методы save_model() и load_model(), доступные в Keras. Последний потребует около 100 Мб при первоначальной загрузке модели. Почитать о других доступных моделях можно в документации.

Читать дальше →

Flutter, руководство для начинающих

Время на прочтение15 мин
Охват и читатели38K
На дворе середина 2019 года, кроссплатформа плотно вошла в жизнь стартапов по всему миру, но все чаще в ее сторону смотрят и команды аутсорс-разработки, и клиенты, которые делают ставку на снижение затрат. Кто-то делает ставку на React Native, кто-то исследует возможности Kotlin Multiplatform, а новый гость подкаста AppsCast Евгений Сатуров saturovv последние полгода активно разрабатывает на Flutter, следит за обновлениями фреймворка и продвигает технологию в массы. Максимум полезных ссылок и советов для начинающего Flutter-разработчика: от гайдлайнов до репозиторием с примерами реализации архитектуры — в разговоре с Евгением.



AppsCast — подкаст, посвященный мобильной разработке и выходящий при поддержке конференции AppsConf. Каждые две недели новый гость, с которым мы с Даниилом Поповым (int02h) обсуждаем технологии, лучшие практики, жизнь разработчиков, а так же холиварим и делимся опытом.
Читать дальше →

Flutter 1.7 — что нового в релизе от 10 июля 2019 года

Время на прочтение2 мин
Охват и читатели6K
Не так давно был релиз Flutter на Google I/O, но, команда Flutter опять выкатила новую версию с интересными новинками, которыми я не мог не поделиться.


Бесплатное фото подложки отсюда
Читать дальше →

Нативная разработка, React Native и Flutter: критерии выбора

Время на прочтение8 мин
Охват и читатели36K
Уже на стадии проектирования мобильного приложения важно понимать, какой язык выгоднее использовать для конкретного проекта. Наряду с нативной разработкой (например, для iOS — Swift или Objective-C, для Android – Java или Kotlin), используются кроссплатформенные фреймворки, такие как React Native и Flutter. Мы в SimbirSoft предлагаем несколько критериев, которые помогут в выборе как бизнесу, так и мобильному разработчику.

Читать дальше →

Функциональный подход обработки ошибок в Dart

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

При переходе на новую технологию, мы лишаемся привычных инструментов для разработки. В каких-то случая мы вынуждены смириться с их отсутствием из-за каких-то технических ограничений, но при возможности переносим инструменты с собой. Разрабатывая android приложения, за основу я брал пример чистой архитектуры предложенной Fernando Cejas. Разбираясь с используемыми во Flutter шаблонами проектирования, я решил отказаться от этой архитектуры в пользу BLoC. К данному шаблону я быстро привык, он очень похож на MVVM, с которым работал ранее, но с одной деталью я никак не хотел мириться. При вызове методов репозитория я должен был ловить исключения, кастить их к какому-то типу и в соответсвии с типом, создавать необходимое состояние. На мой взгляд, это очень захламляет блок и я портировал тип Either используемый ранее в android проектах, основанных на Fernando.

Читать дальше →

Как я пытался починить поиск по картам для водителей. Часть 3 (финал)

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



Собственно, к версии приложения 3.0 наконец получилось реализовать все основные функции, которые хотелось. После прошлой статьи из этой серии его скачало некоторое количество людей, и даже написали отзывы — спасибо, ко всем прислушался. Работал над новой версией месяца два интенсивно, все мелкие изменения не перечислить — по сути это на 80% новое приложение. С кардинально улучшенным интерфейсом, раза в 2 быстрее и значительно стабильнее. Опять же, приглашаю сочувствующих оценить и поругать. А под катом снова технические моменты.

Вот тут ссылки на айфон и андроид
Читать дальше →

[Екатеринбург, анонс] Флаттертон — воркшоп про разработку на Flutter

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

image


Flutter получил стабильную версию всего полгода назад, но уже собрал семьдесят тысяч звёзд на Гитхабе и вошёл в основной стек многих крупных компаний.


Чтобы не отставать от мировых трендов, контуровцы под присмотром Google Developers Group проводят воркшоп по написанию интерфейсов на Flutter. Изучим основные фишки платформы, познакомимся с языком Dart, научимся реализовывать фантастическую анимацию и создадим собственные приложения.

Читать дальше →

Flutter: прокачиваем AppBar & SliverAppBar

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

Во Flutter для создания панели инструментов используется хорошо всем известный AppBar, ну а когда нам нужна динамическая панель инструментов, которая покажет контент при свайпе, мы используем отличный виджет SliverAppBar.


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


Я видел много вопросов на StackOverflow и в группах Facebook о том, как можно изменить AppBar и SliverAppBar с точки зрения поведения или дизайна.


Давайте рассмотрим две задачи.

Читать дальше →

Собираем Flutter приложение для десктопа

Время на прочтение2 мин
Охват и читатели21K
image

Всем привет!


Сегодня я покажу вам, как же запустить ваше существующие Flutter приложение на десктопе (MacOS, Linux или Windows).

Читать дальше →

Главный секрет Google I/O 2019, о котором не узнать из интернета

Время на прочтение11 мин
Охват и читатели15K
Титульная конференция крупнейшего гиганта рекламного бизнеса отгремела уже как неделю, а некоторые до сих пор пишут статьи. Так как всё, что можно было написать про программу и главные новинки, уже написано (привет phillennium), то что остаётся скромному посетителю? Только рассказать всё, что скрыто, обнажить тёмные уголки и понять, что вообще происходит в солнечной Калифорнии эти три дня в году.

Так получилось, что я был на предыдущей конференции и даже написал статью про это. Поэтому, с одной стороны, задача усложняется, ведь никто не хочет читать одно и то же два раза, а с другой, она усложняется ещё больше. Не хотелось бы превращать текст в отчёт в духе: «прирост посетителей: +20%, надои упали на 3%, настроение личного состава хорошее», поэтому давайте условимся: перед вами будет художественное описание личного опыта и немного объективной информации.

Внимание, это не детальный разбор программы, а своего рода виртуальный тур по конференции. Никто же не любит обманутых ожиданий, правда? Все доклады есть на YouTube


Читать дальше →

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

Реализовываем CircularRevealAnimation на Flutter и попутно публикуем библиотеку на pub.dev

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

В Android есть очень интересная возможность анимации View, которая называется CircularRevealAnimation — дословно "круговое раскрытие". Flutter, в свою очередь, хотя и обладает богатыми возможностями для анимирования виджетов, не предоставляет такую анимацию из коробки.



В этой статье будет показано как реализовать такую анимацию средствами Flutter и опубликовать библиотеку на pub.dev для удобного доступа и распространения.

Читать дальше →

Flutter: локализация приложений средствами Android Studio

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


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


Эта статья не претендует на полноту охвата вопроса, а является описанием практики, на мой взгляд, очень эффективно уменьшающей ручной ввод.


Речь идет о локализации при помощи flutter_i18n — плагина Android Studio, используя который удается избавиться от рутинной работы и шаблонного кода.

Читать дальше →

Тестирование производительности Flutter приложений

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

Фреймворк Flutter по умолчанию работает хорошо и быстро, но означает ли это, что вам вообще не нужно думать о производительности? Нет. Абсолютно реально писать приложения Flutter, которые будут медленными. С другой стороны, также можно использовать фреймворк максимально и делать ваши приложения не только быстрыми, но и эффективными, потребляя меньше времени процессора и батареи.



Это то, что мы хотим видеть: статистически значимый результат сравнения двух версий вашего приложения по какой-то значимой метрике. Читайте дальше, чтобы узнать, как такое получить.

Читать дальше →

Основы RxVMS: RxCommand и GetIt

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

Это четвертая часть моей серии про архитектуру Flutter:



Хотя 2 предыдущие части явно не относились к паттерну RxVMS, они были необходимы для ясного понимания этого подхода. Теперь мы обратимся к самом важным пакетам, которые понадобятся, чтобы использовать RxVMS в вашем приложении.

Читать дальше →

Анонсирован Dart 2.3: оптимизирован для разработки пользовательских интерфейсов

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

Сегодня (8 мая 2019) мы объявляем о релизе Dart 2.3 SDK с новыми языковыми конструкциями, которые улучшают ваш опыт разработки при создании пользовательских интерфейсов, новой поддержкой инструментов для разработки Flutter UI и двумя новыми веб-сайтами: dart.dev и pub.dev.

Читать дальше →

RxDart: магические трансформации потоков

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

Добро пожаловать — это третья часть моей серии статей об архитектуре Flutter.



На этот раз мы совершим небольшое погружение в магическое царство реактивных расширений (Rx). Я сосредоточусь на наиболее используемых функциях Rx и объясню их применение. Если вы не читали предыдущий пост, сейчас для этого самое время, прежде чем двигаться дальше.


RxDart — это реализация концепции Rx для языка Dart, за что следует сказать спасибо Frank Pepermans и Brian Egan. Если ранее вы использовали Rx в других языках, то наверняка заметите разницу в именовании ряда функций, но это вряд ли вызовет у вас затруднения.


Код для тестирования находится здесь.


До сих пор мы использовали потоки как способ передачи данных из одного места в другое в нашем приложении, но они могут сделать гораздо больше. Давайте взглянем на некоторые функции, которые Rx добавляет в Streams.

Читать дальше →

Основы Dart Streams

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

Это вторая часть моей серии по поводу Flutter Architecture:



Потоки являются основным строительным блоком RxVMS, их понимание является абсолютно необходимым условием для работы с этой библиотекой, так что мы подробнее остановимся на них в этом посте.


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


Пусть течет


Я читаю множество комментов, что дескать потоки, и особенно Rx, слишком сложны для понимания и, как следствие, для использования.


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

Читать дальше →