Всем привет, читатели Habr! В начале я хочу сделать акцент на том, что статья ориентирована для новичков, однако может быть полезной для более опытных коллег. В этой статье я расскажу про то, что такое тема приложения, какие ошибки обычно делают новички и рассмотрю, как по мне, элегантный вариант настройки тем.
User
Flutter: Совмещаем GraphQL с JsonSerializable
Всем привет, читатели Habr! В этой статье я расскажу как я познакомился с GraphQL, что это такое и как мне удалось совместить его с JsonSerializable.
Шел 7 месяц работы в моей первой компании. В целом, работой я был доволен, однако платили мало. Повышение должно было быть только через 2 месяца, поэтому я решил перестраховаться и получить офер, на тот случай, если меня не устроит новая ЗП. Начал отправлять резюме и одна из компаний попросила сделать тестовое, где нужно было получить информацию о миссиях SpaceX с использованием GraphQL. С этим аналогом REST API я был не знаком и моим первым шагом стало ознакомление с технологией, а потом уже выбор пакета и реализация задания.
Что же такое GraphQL?
Как я написал выше, это аналог REST API. GraphQL был разработан в Facebook (теперь уже Meta). Он чем-то напоминает SQL, а именно тем, что у него есть свой синтаксис для составления запросов. Используется в основном для загрузки данных с сервера.
Из его основных характеристик можно выделить следующие:
Flutter: Ускоряем работу с помощью VS Code Tasks
Всем привет, читатели Habr! В этой статье я расскажу как ускорить работу и облегчить нам жизнь с помощью VS Code Tasks. Погнали!
Мы пишем не только код
Это правда, разработчики пишут не только код. Иногда нам приходиться писать команды, чтобы выполнить определенные действия. Например, я уверен, что большинство из вас писали команду для сборки apk файла или для получения зависимостей (flutter pub get). Либо если у вас есть генерация кода, то вы выполняли команду для запуска генерации.
Надеюсь вы более продвинутый пользователь и знаете, что с помощью стрелок в консоли можно переключаться между командами. Это хорошо, однако хочется чего-то большего, а именно такого…
Flutter: Мощь DI и Injectable
Всем привет, читатели Habr! В этой статье я расскажу про DI (Dependency Injection) и также покажу, как я использую его на практике. Погнали!
Сначала простыми словами про DI
Недавно я скачал приложение, которое показывает сколько времени я провожу в своем смартфоне и мою зависимость от него. Что ж, в некоторые дни я проводил больше 5 часов и мне показало сильную зависимость. У меня Xiaomi Redmi Note 8.
На первый взгляд может показаться, что я завишу конкретно от моего Xiaomi. Однако это не так. Был бы у меня любой другой смартфон, результаты бы не изменились. В итоге получается, что я имею зависимость от абстракции - смартфон, а мой текущий - его конкретная реализация. Настало время переходить к практике!
Теперь к практике
Представим себе такую ситуацию, что каждую первую неделю вы должны показывать заказчику UI с моканными данными, а уже в конце спринта полностью готовую логику. Я надеюсь вы знакомы с паттерном Repository, который отвечает за получение данных, если нет - рекомендую ознакомиться. Самый простой способ решение проблемы - написать в репозитории методы, которые отдают моканные данные, а потом добавить методы для получения реальных данных (или заменить). Однако, поступая таким образом, мы нарушаем один из принципов SOLID, а именно Single Responsibility. Как быть в таком случае? Создать абстрактный класс нашего репозитория и после этого сделать 2 реализации, одна из которых отвечает за моканные данные, а другая - за реальные. И в Bloc или в любой другой класс, который отвечает за State Managment, вы инжектите абстракцию, тем самым давая возможность заменить репозиторий с моками на репозиторий для реальных данных.
Flutter: простыми словами про ассинхронность и параллельность
Всем привет, читатели Хабра! В этой статье я хочу простыми словами рассказать про асинхронность и параллельность в Dart/Flutter. Многие новички сталкиваются с непонимаем того, что это и когда что использовать. Я сам столкнулся с этой проблемой в начале своего карьерного пути и хочу простыми словами рассказать, что это такое и когда нужно.
В начале я хочу представиться) Меня зовут Владимир Калашников, я заканчиваю последний курс кафедры искусственного интеллекта и уже больше года профессионально занимаюсь разработкой приложений на Flutter. Несмотря на свой небольшой опыт, я уже успел поработать на проекте от компании, у которой оборот денежных средства более 60 мрлд$ за 2017 год. Я думаю, мне есть, что рассказать :)
Допустим, приложение делает запрос в сеть, чтобы отобразить список продуктов. В этот момент пользователь возможно хочет переключаться между вкладками приложения. Если сделаете весь ваш код синхронным, то у него не будет такой возможности. И я гарантирую, через 5 минут в крайнем случае, приложение будет удалено. Это еще не наихудший случай, может потом прилетить негативный отзыв.
Information
- Rating
- Does not participate
- Registered
- Activity