Flutter. Много
2.78K subscribers
313 photos
23 videos
250 links
Заказать мобильную разработку: https://amiga.agency/?utm_source=tg
Заказать рекламу в канале @amiga_agency_bot

Новости Flutter-разработки, дайджесты мероприятий, личный опыт.
Download Telegram
Hola, Amigos! Как вам наш апгрейд?

Для тех, кто с нами недавно, этот канал создали и развивают Flutter-разработчики агентства продуктовой разработки Amiga 🤪

В 2022 году мы завели телеграм-канал за секунду и не было времени думать над аватаром. Сейчас нас здесь становится больше, и хочется улучшать всё до мелочей! Каждый новый подписчик — это огромная мотивация. Спасибо, что читаете и выходите на связь в нашем чате❤️

Хотели бы увидеть, какие у нас еще были варианты для аватара?)
Please open Telegram to view this post
VIEW IN TELEGRAM
Hola Amigos! Мы решили познакомиться с вами поближе, чтобы вы знали, кто стоит за телеграм-каналом Flutter.Много и могли к нам обращаться. Начну с себя) Меня зовут Саша Чаплыгин, я middle Flutter dev в Amiga. Знаю, что у нас здесь много начинающих разработчиков, поэтому поделюсь своей историей профессионального роста.

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

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

В качестве «образовательных платформ» могу посоветовать только youtube и официальную документацию Flutter. На youtube я смотрю: heyflutter.com, Konstantin Kokorin, LazyLoad Dart & Flutter, офиц. канал Flutter, Уроки Flutter.

Телеграм каналов не так много, но некоторые могут быть полезны для изучения разных фишек и подходов. Я подписан, конечно, на наш канал Flutter.Много, а также Dart & Flutter, Oh my Flutter, Flutter for Dev.

Официальная документация максимально прозрачна и понятна. Её нужно изучать на постоянной основе. Я пользуюсь ей очень часто! Также советую прям зубрить ООП, алгоритмы, структуры данных и Figma, чтобы быть подкованным со всех сторон ⚙️

Книга Роберта Мартина «Чистая архитектура» помогла мне в свое время понять основные принципы построения правильной архитектуры любого проекта, не только мобильных приложений.

По мере набора скиллов погружайтесь все глубже — разные библиотеки, покрытие ПО тестами, native и т.д.

Более подробно о своем опыте я рассказал в статье на Habr. Желаю вам успехов! Пишите в чат, если хотите пообщаться. Сегодня я там за главного ⚙️
Please open Telegram to view this post
VIEW IN TELEGRAM
Обзор пакета auto_size_text

Hola, Amigos! Сегодня разберём простой, но очень #пп auto_size_text, который облегчает работу с текстом. Пакет добавляет виджет AutoSizeText, который автоматически меняет размер текста, чтобы он точно уместился в заданные рамки (поле maxLines).

В сравнении с обычным Text, у AutoSizeText мы не найдем такие поля, как selectionColor, textHeightBehavior и textWidthBasis. Однако мы получаем новые возможности:

1️⃣ textKey ([тип: Key]) — устанавливает ключ для результирующего виджета Text, что полезно для поиска созданного Text через AutoSizeText.
2️⃣ wrapWords ([тип: bool]) — определяет, следует ли переносить слова, не умещающиеся в одной строке. Если false, размер шрифта уменьшается до тех пор, пока все слова не уместятся в одну строку.
3️⃣ продолжение в карусели.

А вы используете auto_size_text? Делитесь в чате своим опытом.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Интеграция Flutter в Native iOS (Часть 2)

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

Кто пропустил первый выпуск о создании приложения на iOS и интеграцию Flutter в это приложение, то читайте на Habr.

Ставьте реакции, если было интересно и ждете завершающую часть этой трилогии! ⚙️
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Интеграция Flutter в Native iOS (Часть 3)

Hola, Amigos! На связи Саша Чаплыгин, Flutter dev Amiga. Подоспела последняя часть статьи про использование «Hot Reload», «Hot Restart» и тестирование на Codemagic.

Для тех, кто всё пропустил, рассказываю! Недавно мне попалась интересная статья на Medium о том, как добавить Flutter в новый или существующий проект Native iOS и протестировать его на Codemagic. Перевод пришлось разделить на 3 части для лучшего восприятия.

Тут 1 часть. Она посвящена созданию приложения на iOS и интеграции Flutter в это приложение.

Тут 2 часть. Она про реализацию экрана Flutter в приложение для iOS и использование platform channel для отправки данных из натива во Flutter.

Тут 3 часть. The end!

Желаю приятного чтения! Пишите комментарии и ставьте стрелочку вверх ⬆️ на Habr, если было интересно.
Please open Telegram to view this post
VIEW IN TELEGRAM
Hola, Amigos! Перехватываю эстафету и продолжаю рубрику знакомства. Меня зовут Сергей Климович, я Flutter Team Lead и разработчик.

Flutter начал изучать по видео на youtube и статьям. К тому времени у меня уже был опыт реализации проектов на Native под платформу iOS, поэтому решил изучать фреймворк самостоятельно.

Смотрел: Алексей Скуторенко, Константин Кокорин, Lazyload.

Сейчас регулярно читаю medium, vc и habr. А также смотрю онлайн-трансляции конференций WWDC, Google I/O и Flutter Forward.

С 2011 начал пользоваться техникой Apple и я настолько проникся экосистемой, что уже через пару лет начал писать на новеньком свеже выпущенном Swift. Учился на курсах в «Высшей школе экономики» под эгидой Apple. Они пытались запустить академическую программу «iOS Developer University program».

Позже познакомился со SwiftUI и декларативным подходом, после которого абсолютно не хотелось смотреть в сторону Constraints. Далее понадобилось сделать mvp для двух платформ и естественным выбором стал Dart+Flutter. Так с одной птички я перешел на другую 🦋

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

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

Желаю вам успешного профессионального роста! Не опускайте руки, а если есть трудности, приходите к нам в чат ⚙️
Please open Telegram to view this post
VIEW IN TELEGRAM
Развёртывание Flutter web

Hola, Amigos! Сегодня мы обсудим процесс развертывания Flutter-приложения в изолированном окружении без необходимости настройки полноценного сервиса для веба на сервере ⚙️

С помощью docker контейнера вы можете создать и легко развернуть большинство сервисов, в том числе и Flutter web.

Для начала нам потребуется сам код и docker, установленный на вашем компьютере.

Создаём папку, где будут хранится файлы для компиляции и развёртывания. Переносим туда папку с Flutter проектом. В ней создаём файл Dockerfile, в котором будет обрабатываться последовательность сборки и компиляции проекта.

# Выбираем образ debian для сборки
FROM debian:latest AS build-env

#Загружаем необходимые зависимости для загрузки и работы flutter sdk
RUN apt-get update
RUN apt-get install -y curl git wget unzip libgconf-2-4 gdb libstdc++6 libglu1-mesa fonts-droid-fallback lib32stdc++6 python3 sed
RUN apt-get clean

RUN git clone https://github.com/flutter/flutter.git /usr/local/flutter

ENV PATH="${PATH}:/usr/local/flutter/bin:/usr/local/flutter/bin/cache/dart-sdk/bin"

#Запускаем и обновляем flutter
RUN flutter doctor -v
RUN flutter channel master
RUN flutter upgrade

#Создаем папки для дальнейшей работы
RUN mkdir /app/
COPY ./web-app/. /app/
WORKDIR /app/

#Запускаем компиляцию
RUN flutter build web

#Берем образ с nginx
FROM nginx:alpine
#Копируем скомпилированное flutter web приложение в контейнер с nginx
COPY --from=build-env /app/build/web /usr/share/nginx/html


В строчке «COPY ./web-app/. /app/» заменяем «./web-app/» на папку, в которой находится ваш Flutter проект.

В этой же папке создаём файл docker-compose.yml. Можно обойтись и без него, однако удобнее работать с контейнерами, когда все команды в Dockerfile, а остальные — в docker-compose. Пишем:

version: '3'
services:
nginx:
# Наименование контейнера
container_name: 'nginx-webserver-example'
# Путь к Dockerfile
build: ./
# Открытие портов из контейнера 80 для http и 443 для ssl и https
ports:
- '80:80'
- '443:443'


Выполните docker compose up и наслаждайтесь результатом по адресу localhost ⚙️

Пример проекта доступен по ссылке. Ставьте реакцию, если было полезно!
Please open Telegram to view this post
VIEW IN TELEGRAM
Обзор пакета share_plus

Hola, Amigos! Сегодня рассмотрим полезный пакет share_plus, предоставляющий простой способ реализации функции обмена контентом (шаринга) в вашем приложении. Этот пакет не только обеспечивает доступ к стандартным диалогам обмена контентом на устройстве, но также позволяет настроить его.

Преимущества share_plus:
1️⃣ Простая и быстрая интеграция share_plus в приложение.
2️⃣ Поддержка различных типов контента: текст, изображения, файлы.
3️⃣ Кросс-платформенность.

Рассмотрим основной функционал пакета.

Для шеринга текста необходимо вызвать статический метод:
Share.share('check out my website https://example.com');


Если вам необходима тема в Email, добавьте опциональный параметр subject:
Share.share('check out my website https://example.com', subject: 'Look what I made!');


Вы можете отслеживать, сделал ли пользователь действие или просто закрыл окно.

Будьте внимательны, когда пользователь нажал на иконку приложения, в которое будут шарится данные, ShareResultStatus придет success.
final result = await Share.shareWithResult('check out my website https://example.com');
if (result.status == ShareResultStatus.success) {
print('Thank you for sharing my website!');
}


Чтобы поделиться одним или несколькими файлами, вызовите статический shareXFiles.
final result = await Share.shareXFiles([XFile('${directory.path}/image.jpg')], text: 'Great picture');
if (result.status == ShareResultStatus.success) {
print('Thank you for sharing the picture!');
}


У пакета есть ограничения в использовании, о которых мы рассказали в чате. Переходите, чтобы посмотреть и пишите был ли у вас опыт реализации подобного функционала? 🦋
Please open Telegram to view this post
VIEW IN TELEGRAM
Hola, Amigos! Меня зовут Ярослав Цемко, Flutter dev Amiga. Расскажу вам сегодня свою историю о том, как пришёл во Flutter, и почему выбрал именно его.

Однажды я столкнулся с задачей: сделать простое кроссплатформенное приложение для оценки стоимости доставки перевозки металла из одного населённого пункта в другой.

По универу от одногруппников я слышал, что есть React Native и Flutter. Изучив несколько статей и youtube про каждый из этих фреймворков, понял, что Flutter выигрывает. Dart — очень классный язык, а Flutter позволяет писать крутые приложения довольно быстро и гибко сразу для разных платформ. Иначе бы пришлось разрабатывать и сопровождать зоопарк фреймворков и языков, как уже было в моей практике. И это вообще не весело🥲

Раньше я занимался Oracle и ETL, потом Full-stack на Python, PHP, Angular, Java. Но всегда тяготел к Java, особенно мне понравился фреймворк spring-boot для бэка. В итоге мне удалось поработать бэкендером, но т.к. мобильные приложения куда более осязаемы, я решил полностью уйти на Flutter.

Учился и продолжаю развиваться самостоятельно. Могу посоветовать видосы на youtube (https://www.youtube.com/@LearnDartFlutter и
https://api.flutter.dev), статьи на Habr и Medium, ну и конечно же stackoverflow.com Полезного было много!

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

Всем начинающим разработчикам могу пожелать только терпения и усидчивости!

Давайте проверим, сколько у нас здесь новичков и продвинутых пользователей? Ставьте 🤓, если вы только пришли во Flutter и изучаете его меньше года. И ставьте 😎, если вы во Flutter больше года.

Если есть вопросы, жду в чате.
Hola, Amigos! Понедельник — день тяжелый, поэтому не грузим вас сегодня кодом, а предлагаем посмотреть обновления операционной системы iOS 17.

Новшества, которые вы сможете задействовать в своих проектах:

1️⃣ WidgetKit улучшения: Повышенная гибкость и возможности для кастомизации виджетов. Новые API для более креативного дизайна.

2️⃣ SwiftUI 4.0: Еще больше удобства в построении интерфейсов. Новые компоненты и возможности для экспрессивного кода.

3️⃣ Мощные инструменты AR: Расширены возможности дополненной реальности. Откройте новые сценарии взаимодействия с пользователем!

Продолжение карусели по ссылке.

Как вам iOS 17? Какие возможности для себя открыли? Делитесь в комментариях!
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM