Как стать автором
Обновить
3.38
Рейтинг

Dart *

Язык программирования, созданный Google

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

Flutter: Ускоряем работу с помощью VS Code Tasks

Dart *Flutter *

Всем привет, читатели Habr! В этой статье я расскажу как ускорить работу и облегчить нам жизнь с помощью VS Code Tasks. Погнали!

Мы пишем не только код

Это правда, разработчики пишут  не только код. Иногда нам приходиться писать команды, чтобы выполнить определенные действия. Например, я уверен, что большинство из вас писали команду для сборки apk файла или для получения зависимостей (flutter pub get). Либо если у вас есть генерация кода, то вы выполняли команду для запуска генерации.

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

Читать далее
Всего голосов 16: ↑5 и ↓11 -6
Просмотры 2.3K
Комментарии 15

Новости

Flutter: Мощь DI и Injectable

Dart *Flutter *

Всем привет, читатели Habr! В этой статье я расскажу про DI (Dependency Injection) и также покажу, как я использую его на практике. Погнали!

Сначала простыми словами про DI

Недавно я скачал приложение, которое показывает сколько времени я провожу в своем смартфоне и мою зависимость от него. Что ж, в некоторые дни я проводил больше 5 часов и мне показало сильную зависимость. У меня Xiaomi Redmi Note 8.

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

Теперь к практике

Представим себе такую ситуацию, что каждую первую неделю вы должны показывать заказчику UI с моканными данными, а уже в конце спринта полностью готовую логику. Я надеюсь вы знакомы с паттерном Repository, который отвечает за получение данных, если нет - рекомендую ознакомиться. Самый простой способ решение проблемы - написать в репозитории методы, которые отдают моканные данные, а потом добавить методы для получения реальных данных (или заменить). Однако, поступая таким образом, мы нарушаем один из принципов SOLID, а именно Single Responsibility. Как быть в таком случае? Создать абстрактный класс нашего репозитория и после этого сделать 2 реализации, одна из которых отвечает за моканные данные, а другая - за реальные. И в Bloc или в любой другой класс, который отвечает за State Managment, вы инжектите абстракцию, тем самым давая возможность заменить репозиторий с моками на репозиторий для реальных данных.

Читать далее
Всего голосов 5: ↑2 и ↓3 -1
Просмотры 1.8K
Комментарии 9

Flutter: простыми словами про ассинхронность и параллельность

Dart *Flutter *
Из песочницы

Всем привет, читатели Хабра! В этой статье я хочу простыми словами рассказать про асинхронность и параллельность в Dart/Flutter. Многие новички сталкиваются с непонимаем того, что это и когда что использовать. Я сам столкнулся с этой проблемой в начале своего карьерного пути и хочу простыми словами рассказать, что это такое и когда нужно.

В начале я хочу представиться) Меня зовут Владимир Калашников, я заканчиваю последний курс кафедры искусственного интеллекта и уже больше года профессионально занимаюсь разработкой приложений на Flutter. Несмотря на свой небольшой опыт, я уже успел поработать на проекте от компании, у которой оборот денежных средства более 60 мрлд$ за 2017 год. Я думаю, мне есть, что рассказать :)

Допустим, приложение делает запрос в сеть, чтобы отобразить список продуктов. В этот момент пользователь возможно хочет переключаться между вкладками приложения. Если сделаете весь ваш код синхронным, то у него не будет такой возможности. И я гарантирую, через 5 минут в крайнем случае, приложение будет удалено. Это еще не наихудший случай, может потом прилетить негативный отзыв.

Читать далее
Всего голосов 9: ↑7 и ↓2 +5
Просмотры 4K
Комментарии 6

Dart, Flutter и кроссплатформа: небольшой разбор на практике

Разработка мобильных приложений *Интерфейсы *Dart *Разработка под Windows *Flutter *

Кто-нибудь пробовал использовать Dart / Flutter как на клиенте на нескольких платформах, так и в качестве сервера? Кто-то, конечно. пробовал, хотя далеко не каждый за этим приходил к Flutter. Я на своём pet-проекте провёл такой эксперимент, и хотел бы поделиться результатами и выводами.

Читать далее
Всего голосов 19: ↑19 и ↓0 +19
Просмотры 9.8K
Комментарии 21

Элементарное тестирование, или тестирование Elementary

Блог компании Surf Программирование *Dart *Тестирование мобильных приложений *Flutter *
Tutorial

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

В предыдущих статьях рассказали, как устроен Elementary, чем он полезен, и на примере реального приложения посмотрели, как его использовать. Сегодня разберём, что у Elementary-приложений с тестированием и почему их код тестировать проще.

Читать далее
Всего голосов 8: ↑5 и ↓3 +2
Просмотры 2.3K
Комментарии 3

Как обрабатывать состояния загрузки и ошибки с помощью StateNotifier и AsyncValue во Flutter

Блог компании OTUS Программирование *Dart *Flutter *
Перевод

Состояния загрузки и ошибки очень часто встречаются в приложениях, работающих асинхронно.

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

Читать далее
Всего голосов 7: ↑6 и ↓1 +5
Просмотры 1.7K
Комментарии 0

Telegram-бот на Dart + Docker + VDS

Dart *Flutter *
Перевод
Tutorial

Telegram-бот на Dart + Docker + VDS

Эта статья представляет собой реальный кейс, когда мне пришлось загружать фотографии на VDS (которые пользователь отправил боту), отправлять их в базу данных, а затем удалять их с VDS.

Читать далее
Всего голосов 8: ↑7 и ↓1 +6
Просмотры 5.7K
Комментарии 7

DartUP 2021: как это было

Блог компании Wrike Dart *Конференции Flutter *

В этом году DartUP уже во второй раз прошел в онлайне, и это было круто! Мы снова слушали два потока докладов на русском и английском, неформально общались и участвовали в дискуссиях в SpatialChat, сражались и решали алгоритмические задачи в Code Kombat и обгоняли соперников в Wrike for Speed. В этой статье подводим итоги конференции и делимся видеозаписями всех докладов.

Читать далее
Всего голосов 12: ↑11 и ↓1 +10
Просмотры 1.7K
Комментарии 3

Разработка приложения на Flutter с нуля до релиза: Part 2

Open source *Разработка мобильных приложений *Dart *Flutter *
Tutorial

Привет! Это вторая статья из цикла о разработке приложения на Flutter. В этом "номере" я опишу создание сетевого слоя, работу с локализацией, удобный способ работы с ассетами, локальный поиск и создание UI для одного из двух экранов приложения. Также я выведу интересные метрики, например - сколько данных сможет распарсить ваше приложение за одну милисекунду и начиная с какого размера JSON’а, прилетевшего с бэка UI начнет тормозить. Как говорится - с места...

В карьер!
Всего голосов 9: ↑9 и ↓0 +9
Просмотры 6.5K
Комментарии 7

Секреты запуска Flutter в production. Создаем IT-верфи

Блог компании ATI.SU Программирование *Разработка мобильных приложений *Dart *Flutter *
Tutorial


Про нас


Привет! Мы Даниил Левицкий и Дмитрий Дронов, мобильные разработчики компании ATI.SU — крупнейшей в России и СНГ Бирже грузоперевозок. Хотим поделиться с вами своим видением разработки приложений на Flutter.


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


Ссылка на шаблон и детали реализации под катом.

Читать дальше →
Всего голосов 16: ↑16 и ↓0 +16
Просмотры 7.5K
Комментарии 21

Как устроен Elementary

Блог компании Surf Программирование *Разработка мобильных приложений *Dart *Flutter *

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

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

В статье расскажу, как устроен Elementary, какие принципы в нём заложены и чем вообще он может быть полезен.

Читать далее
Всего голосов 8: ↑7 и ↓1 +6
Просмотры 5.2K
Комментарии 6

ViewModel во Flutter – это антипаттерн

Программирование *Разработка мобильных приложений *Dart *Flutter *

Всем привет! Представляю вам текстовую версию моего доклада на DartUP 2021 (сам доклад на английском можно найти здесь). Посвящен он довольно популярному архитектурному паттерну MVVM (он же Model-View-ViewModel), а конкретно той его части, что про ViewModel.

Паттерн этот весьма распространен в мире нативной Android-разработки – во многом благодаря тому, что является официальной рекомендацией Google. А поскольку многие Flutter-девелоперы попали в мир Flutter'а из нативного Android'а, то и подходы они склонны применять те же самые. Как говорится, работает – не трогай и ничего не меняй.

Но как по мне, в мире Flutter'а этот паттерн не то чтобы полезен, а скорее даже и вреден. И сейчас я буду вас в этом убеждать.

Читать далее
Всего голосов 24: ↑14 и ↓10 +4
Просмотры 6.9K
Комментарии 74

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

Блог компании Surf Разработка мобильных приложений *Dart *Flutter *
Перевод

Повышение производительности, новые фичи Firebase, состояние десктопной версии, новые инструменты и многое другое.

Я — Евгений Сатуров, Head of Flutter в Surf и ведущий Flutter Dev Podcast. Представляю перевод официальной статьи про свежий релиз Flutter 2.8, дополненный моими комментариями.

Читать далее
Всего голосов 21: ↑20 и ↓1 +19
Просмотры 9K
Комментарии 6

Elementary: новый взгляд на архитектуру Flutter-приложений

Блог компании Surf Программирование *Разработка мобильных приложений *Dart *Flutter *
Tutorial

Elementary — это архитектурный пакет, который создали в Surf на основе опыта разработки приложений на Flutter и лучших практик современной разработки.

Решение позволяет чётко разделить слои согласно ответственностям, сделать код прозрачнее, а тестирование проще. На примере реального приложения показываем, как использовать Elementary.

Читать далее
Всего голосов 13: ↑12 и ↓1 +11
Просмотры 7K
Комментарии 12

Разработка приложения на Flutter с нуля до релиза: Идея + Базовая инфраструктура

Open source *Разработка мобильных приложений *Dart *Flutter *
Tutorial

Привет! В данном цикле статей я хотел бы показать, как может происходить создание приложений с использованием Flutter. У меня есть несколько Open Source решений, которые будут использованы в данном приложении. Что из этого получится - увидим в скором будущем.

Если долго мучаться...
Всего голосов 25: ↑25 и ↓0 +25
Просмотры 14K
Комментарии 5

Dart Code Metrics — мой первый pull request

Dart *Flutter *
Из песочницы

В статье рассмотрел инструмент для анализа кода Dart Code Metrics и о том, насколько полезно его использовать. Постарался поделиться своими знания в создании нового правила для анализатора. Автоматизировали проверку имени класса и названия файла не только для своего проекта, а также для всех тех, кто захочет подключить такое правило к своим проектам используя Dart Code Metrics.

Читать далее
Всего голосов 7: ↑6 и ↓1 +5
Просмотры 1.3K
Комментарии 0

Flutter ConstWidget

Разработка под iOS *Разработка под Android *Dart *Flutter *
Из песочницы

Обновление данных в интерфейсе всегда задействует немало ресурсов а его реализация может быть выполнена множеством неоптимальных способов. Повышение производительности, не только радует пользователя, но и расширяет круг целевой аудитории с более старыми устройствами. State management Как? Когда? Почему? Каким способом? Лучше всего изменять состояние виджета/древа виджетов? Сейчас можно увидеть большое кол-во различных библиотек и подходов для решения данной задачи. Вопрос обновления данных интерфейса настолько большой, что библиотеки, которые помогают с управлением состояний становятся Архитектурными подходами, паттернами, а статей про то какой подход лучше еще больше. Данное решение подойдет к любому проекту, ему не нужна библиотека и вовсе не обязательно использовать данный виджет.

Читать далее
Всего голосов 5: ↑2 и ↓3 -1
Просмотры 1.8K
Комментарии 1

Flutter: автоматизация UI тестирования

Блог компании TalentTech Разработка мобильных приложений *Dart *Тестирование мобильных приложений *Flutter *
Tutorial

Мы — команда мобильного проекта FL.ru. В своей статье хотим познакомить вас с Flutter Driver и рассказать об автоматизации UI тестирования мобильных приложений с помощью данного инструмента.

Читать далее
Всего голосов 7: ↑6 и ↓1 +5
Просмотры 5.4K
Комментарии 9

gRPC + Dart, Сервис + Клиент, напишем? Часть 5: Web

Dart *Flutter *
Tutorial

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

Так будет ли Flutter приложение на базе gRPC сервиса работать в Web?

TLDR: Да, но не получится "стримить" со стороны клиента, а всё остальное будет работать. Для этого нужно сплясать с бубном преобразовать запросы на сервис и ответы с него в формат понятный для браузера. Можно использовать Envoy в качестве Web proxy, который "из коробки" поддерживает входящие/исходящие gRPC запросы.

Ниже я покажу как это сделать.

Читать далее
Всего голосов 3: ↑3 и ↓0 +3
Просмотры 1.8K
Комментарии 3

Вклад авторов