Привет! Меня зовут Сергей Арсёнов, я руковожу мобильной разработкой в компании r_keeper. Хочу рассказать, как мы обновляли мобильное b2b-приложение для официантов и почему выбрали для него не совсем классический стек — Kotlin Multiplatform Mobile + UI на Flutter.
Flutter *
Фреймворк для кросс-платформенной разработки
- Новые
- Лучшие
- Все
- ≥0
- ≥10
- ≥25
- ≥50
- ≥100
Flutter: 11 вещей, которые нужно помнить для вашего следующего проекта
Создание нового проекта на Flutter - это благословение - свежая кодовая база, никакого легаси кода (пока что), null safety, самые последние версии ваших любимых библиотек и так далее. Однако, в то же время, необходимо принять критические решения в самом начале, которые будут лежать в основании для будущего, такие как инструменты, пакеты, файловая структура, решение для менеджмента состояния, тестирование и планирование. В противном случае, в итоге, проект превратится в еще одну чашу спагетти с фрикадельками. Чтобы избежать этого, я подготовил список наиболее важных, по моему мнению, частей проекта, которые должны быть решены как можно раньше. Я надеюсь, что это поможет вам. Приятного чтения!
Реализуем чистую архитектуру на Flutter с cubit
Соблюдать принципы чистой архитектуры – значит обеспечить удобство тестирования, поддержки и модернизации приложения. Понимание архитектуры и state management – это база, необходимая начинающему специалисту для успешной командной работы. В этой статье мы расскажем, как с помощью Cubit реализовать чистую архитектуру на примере стартового приложения Flutter – счетчика нажатий на кнопку.
Dart Code Metrics 4.0: команды, поддержка монорепозиториев и новые правила
В предыдущей статье мы анонсировали Dart Code Metrics — инструмент статического анализа кода. Сегодня я расскажу про новые возможности, которые появились в Dart Code Metrics с выходом очередного мажорного обновления. Поговорим про появление команд, поддержку монорепозиториев, улучшения в интеграции с CI/CD, и, конечно же, про новые правила для анализатора. Теперь у инструмента появился сайт с документацией, его можно найти здесь.
Flutter + Socket.io — Обмен информацией в режиме реального времени
Когда скорость имеет решающее значение, когда необходимо иметь возможность обмениваться информацией мгновенно, есть несколько способы добиться этого, отправка множества сетевых запросов на сервер не всегда решает эту задачу, так как часто нам нужно поддерживать постоянное активное соединение с сервером. Тогда и появляются WebSocket.
Flutter: открытие виджетов ключами
Всем привет! Мы продолжаем делиться полезными советами для мобильных разработчиков. С разрешения автора переводим свежий гайд по ключам Flutter, который может быть интересен как начинающим, так и опытным специалистам.
Ключи в Flutter обычно используют для однозначной идентификации виджетов в коллекции и для того, чтобы сохранять состояние StatefulWidgets во время их замены или перемещения в дереве виджетов. Ключи в качестве необязательных параметров в своих конструкторах принимают почти все виджеты Flutter.
А вы задумывались, когда нужно использовать ключ и что происходит “под капотом”? В этом руководстве мы найдем ответ, создав простое приложение для управления списком задач и отображения заголовков новостей. Вы узнаете:
- Какие бывают ключи и как они работают.
- Когда использовать ключ.
- Как работать с разными типами ключей
GetX for Flutter. Dependency Injection для частных случаев
GetX удобен. Действительно удобен, лаконичен, функционален, выразителен. Но порою его функционала не хватает. В частности, речь об инжектировании контроллеров -Get.put/lazyPut/create/find
- вот это все. Данная схема отлично работает в контексте навигации между страницами. Но не работает, например, в страницах PageView
, или же при конструировании Get.bottomSheet
. Ниже предлагается решение для этих случаев.
Инструкция: как написать собственный GitHub Action на Dart
Привет! Меня зовут Дмитрий Круцких, я Flutter-тимлид в компании Surf. Сегодня расскажу, как написать простейший GitHub Action, используя язык программирования Dart.
Анонс эфира Flutter live-coding сессии
Представьте, пришёл заказчик и просит сделать приложение — язык в приложении должен быть всего один. Допустим, только английский. Приложение выходит на рынок, становится успешным, и заказчик радостно просит адаптировать апп под другой язык — скажем, китайский. Не, ну а что такого-то?
В этом месте разработчик испытывает мучительную боль и рвёт на себе волосы из-за своей непредусмотрительности.
Получаем реальное покрытие тестами для приложений на Flutter
Покрытие приложения тестами - один из самых важных принципов в разработке. У тестов есть множество безусловных достоинств: они помогают избегать баги, регрессии и экономят много денег.
Во Flutter есть несколько видов написания тестов. Они: Unit-тесты, Widget-тесты и Integration-тесты. Как порядочный разработчик, Flutter приложения вы будете писать вместе с тестами.
Тап в статус бар. Делаем простое сложно c помощью Flutter
В iOS есть такая фича - scrolls to top.
Посмотрим, может ли Flutter предоставить нам такую функциональность из коробки?
Как перестать писать код для взаимодействия с бэкендом
Привет! Начну с главного - я лентяй. Я очень-очень ленивый разработчик. Мне приходится писать много кода - как для бэка, так и для фронта. И моя лень постоянно терзает меня, говоря: Ты мог бы не писать этот код, а ты пишешь... Так и живем.
Но что делать? Как можно избавиться от необходимости писать хотя бы часть кода?
Есть много подходов к решению этой проблемы. Давайте посмотрим на некоторые из них.
Flutter плагин для импорта стикеров в телеграм
Недавно Telegram анонсировал новый конкурс:
Дано: механизм импорта стикеров для Android и iOS приложений.
Задача: написать Android или iOS приложение, использующее этот механизм.
Сроки очень ограничены, дедлайн 4‑го июля. Объективно, написать приложение за столь короткий я не успеваю. Решил хотя бы помочь Flutter разработчикам в этом конкурсе и написать плагин для работы с нативными SDK. Об этом и будет статья.
gRPC + Dart, Сервис + Клиент, напишем? Часть 3
Привет, я Андрей, работаю Flutter разработчиком в компании Финам.
Продолжим развивать сервис Umka.
На примере реализации кода для проведения "экзамена" мы познакомимся с возможностью технологии gRPC передавать данные в виде потока от клиентского приложения на сервис.
Также парой-тройкой десятков строчек кода мы реализуем чат, для проведения "технического интервью".
Для этого используем возможность gRPC осуществлять двунаправленную потоковую передачу данных от сервиса к клиентскому приложению и обратно в рамках одного HTTP/2 соединения.
Внедрение зависимостей (Dependency Injection) с GetIt во Flutter
Внедрение зависимостей - DI - Dependency injection - термин часто встречающийся на собеседованиях. Сам по себе концепт опирается на более объемный принцип инверсии зависимостей (буква D в SOLID), но намного проще и ближе к практике. Кратко можно сказать, что при внедрении зависимостей, мы задаем значения переменных объекта в момент выполнения программы, а не в момент компиляции.
В этой статье я постараюсь показать, что использование библиотек для DI - это легко и удобно, даже для небольших проектов и опишу три случая с кодом ДО и ПОСЛЕ. Надеюсь, даже в небольшом проекте сразу станет понятно, что код после применения внедрения зависимостей стал чуть-чуть лучше.
Часто программисты не понимают, для чего им в их небольших проектах, которые далеки от тысяч файлов корпоративных громад, нужно внедрение зависимостей. В таких проектах не описываются интерфейсы, используются одни и те же классы, экземпляры которых можно передать всем, кому это необходимо. На самый крайний случай, используются синглтоны для получения единственного экземпляра класса во всем приложении.
Работать мы будем с достаточно популярной библиотекой GetIt. Проект минималистичен: приложение показывает погоду в настоящий момент с использованием одного из двух сервисов: Yandex.Weather или VisualCrossing. Если пользователь разрешит, то учитывается его местоположение и погода будет актуальна для его города.
gRPC + Dart, Сервис + Клиент, напишем? Часть 2
gRPC + Dart, Сервис + Клиент, напишем? Часть 2.
Продолжим развивать сервис на основе технологии gRPC, основы которого мы заложили в первой части.
gRPC + Dart, Сервис + Клиент, напишем
Привет! Меня зовут Андрей. Занимаюсь разработкой Flutter приложений.
Написание материала вызвано желанием показать пример создания сервиса c использованием технологии gRPC в экосистеме Dart и, соответственно, Flutter. Желание периодически возникает, когда приходится испытывать "боль", при переключении на проекты, в которых до сих пор применяется REST + JSON.
Это будет короткая серия из 3-4 статей.
Основы Flutter для начинающих (Часть IX)
Flutter позволяет вам писать простые и понятные тесты для разных частей приложения.
Сегодня мы попробуем написать несколько unit тестов, которые используются для тестирования классов, методов и отдельных функций.
Также мы попробуем использовать библиотеку Mockito
, которая позволяет создавать фейковые реализации.
Ну что ж, приступаем к тестированию!
Основы Flutter для начинающих (Часть VIII)
Flutter наделён большими возможностями для простой кастомизации пользовательского интерфейса.
Сегодня мы пастараемся охватить самые главные вещи, которые могут вам пригодиться в плане создания дизайна приложения.
Статья не претендует на полный объем. В ней приведено только самое главное.
Начинаем!
Вызов кода Go из Dart с использованием cgo и Dart FFI на простом примере
Ключевой мотивацией для написания данной статьи является факт сильного недостатка информации (особенно в русскоязычном сообществе) по использованию cgo и Dart FFI для использования Go из языка Dart.
Язык Dart, не смотря на свою возрастающую популярность, на данный момент до сих пор не имеет такого же большого сообщества, как у языка Go. Более того, Dart заточен под выполнение других задач, по этому он не реализует всего того функционала, который уже написан на языке Go.
В случае если можно можно избежать экспорта go кода в Dart, то лучше воспользоваться такой возможностью, однако могут возникать случаи, когда использование уже написанного на go кода - является оптимальным решением (например вы уже знакомы с Go и Dart, и не хотите писать код на C, в таком случае есть смысл задуматься об использованием cgo и Dart FFI).
В данной статье на простом примере будет показано как можно повторно использовать код написанный на Go в языке Dart (например в приложениях на Flutter).
Что должно быть установлено:
Вклад авторов
-
smartdev 177.0 -
Wriketeam 108.6 -
sultee 96.0 -
sharpfellow 83.2 -
saturovv 82.0 -
dchabanenko 62.0 -
KnightForce 57.0 -
g0rdan 55.0 -
mbixjkee 55.0 -
alphamikle 52.0