Обзор MaterialApp
Hola, Amigos! Сегодня расскажем про виджет MaterialApp, который есть в каждом проекте. Он предназначен для создания графического интерфейса в стиле material design.
MaterialApp располагается в самом верху глобального дерева виджетов.
Material Design — это дизайн-система, разработанная Google, которая позволяет сделать универсальный дизайн для разных платформ и устройств.
Основные поля настроек локализации MaterialApp:
– locale ([Locale?] определяет языковой стандарт для виджета «Localizations»;
– localizationsDelegates ([Iterable<LocalizationsDelegate<dynamic>>?] делегаты, которые определяют все локализованные ресурсы для виджета «Localizations»);
– supportedLocales ([Iterable<Locale>] список языков, для которых локализовано это приложение).
Основные поля настроек темы MaterialApp:
– Настройка темы приложения (theme ([ThemeData?] визуальные свойства по умолчанию, а также отедельно для других режимов darkTheme, highContrastTheme, highContrastDarkTheme)
– Устанавливает текущую тему themeMode ([ThemeMode?]).
Основные поля настроек навигации MaterialApp:
– routes ([Map<String, Widget Function(BuildContext)>] таблица маршрутизации верхнего уровня приложения);
– initialRoute ([String?] имя первого отображаемого маршрута, если создан навигатор).
Можно вызвать конструктор MaterialApp.router(), который позволит настроить routerConfig, что бывает полезно при подключении кастомной навигации, например, с применением пакета go_router.
Ну и всем знакомые поля:
– debugShowCheckedModeBanner ([bool] включает небольшой баннер «DEBUG» в режиме отладки);
– home ([Widget?] виджет для маршрута приложения по умолчанию).
А вы используете MaterialApp или CupertinoApp? Рассказывайте в чате.
Hola, Amigos! Сегодня расскажем про виджет MaterialApp, который есть в каждом проекте. Он предназначен для создания графического интерфейса в стиле material design.
MaterialApp располагается в самом верху глобального дерева виджетов.
Material Design — это дизайн-система, разработанная Google, которая позволяет сделать универсальный дизайн для разных платформ и устройств.
Основные поля настроек локализации MaterialApp:
– locale ([Locale?] определяет языковой стандарт для виджета «Localizations»;
– localizationsDelegates ([Iterable<LocalizationsDelegate<dynamic>>?] делегаты, которые определяют все локализованные ресурсы для виджета «Localizations»);
– supportedLocales ([Iterable<Locale>] список языков, для которых локализовано это приложение).
Основные поля настроек темы MaterialApp:
– Настройка темы приложения (theme ([ThemeData?] визуальные свойства по умолчанию, а также отедельно для других режимов darkTheme, highContrastTheme, highContrastDarkTheme)
– Устанавливает текущую тему themeMode ([ThemeMode?]).
Основные поля настроек навигации MaterialApp:
– routes ([Map<String, Widget Function(BuildContext)>] таблица маршрутизации верхнего уровня приложения);
– initialRoute ([String?] имя первого отображаемого маршрута, если создан навигатор).
Можно вызвать конструктор MaterialApp.router(), который позволит настроить routerConfig, что бывает полезно при подключении кастомной навигации, например, с применением пакета go_router.
Ну и всем знакомые поля:
– debugShowCheckedModeBanner ([bool] включает небольшой баннер «DEBUG» в режиме отладки);
– home ([Widget?] виджет для маршрута приложения по умолчанию).
А вы используете MaterialApp или CupertinoApp? Рассказывайте в чате.
Кейс: Мобильное приложение для сети АЗС за 2 месяца
Hola, Amigos! На связи Amiga — агентство продуктовой разработки. Сегодня расскажем, как мы перенесли мобильное приложение с Битрикс на Flutter за 2 месяца, сохранив позиции в сторах и многотысячную базу клиентов.
Наш клиент — Хакасская топливная компания (ХТК), у которой уже было свое мобильное приложение на Битрикс с программой лояльности и с базой пользователей более 70 000 человек.
Битрикс прекратил поддержку мобильного модуля, и мы оперативно перенесли мобильное приложение на Flutter🦋
Нам удалось сохранить большую базу клиентов ХТК и их доверие к компании. Удержать позиции в App Store и Google Play. А также улучшить дизайн интерфейса.
Читайте подробности в статье на vc.
Мы всегда рады вашей обратной связи!❤️
Hola, Amigos! На связи Amiga — агентство продуктовой разработки. Сегодня расскажем, как мы перенесли мобильное приложение с Битрикс на Flutter за 2 месяца, сохранив позиции в сторах и многотысячную базу клиентов.
Наш клиент — Хакасская топливная компания (ХТК), у которой уже было свое мобильное приложение на Битрикс с программой лояльности и с базой пользователей более 70 000 человек.
Битрикс прекратил поддержку мобильного модуля, и мы оперативно перенесли мобильное приложение на Flutter
Нам удалось сохранить большую базу клиентов ХТК и их доверие к компании. Удержать позиции в App Store и Google Play. А также улучшить дизайн интерфейса.
Читайте подробности в статье на vc.
Мы всегда рады вашей обратной связи!
Please open Telegram to view this post
VIEW IN TELEGRAM
Hola, Amigos! Сегодня расскажем, чем полезен пакет safe_device.
С помощью safe_device можно получить информацию о платформе устройства, проверить доступность различных функций и даже определить, производится ли работа приложения на реальном устройстве или в эмуляторе.
Особенности и функции пакета:
⚙️ Позволяет определить, происходит ли выполнение кода на реальном устройстве или в эмуляторе.
⚙️ Можно получить доступ к информации о платформе устройства, такой как операционная система, версия и другие характеристики.
⚙️ Позволяет проверить доступность различных функций устройства, таких как камера, GPS, Bluetooth и многое другое.
Рекомендуем всем внедрить #пп в свои проекты и убедиться в его эффективности!
Делитесь в чате используете ли вы пакетом safe_device?
С помощью safe_device можно получить информацию о платформе устройства, проверить доступность различных функций и даже определить, производится ли работа приложения на реальном устройстве или в эмуляторе.
Особенности и функции пакета:
Рекомендуем всем внедрить #пп в свои проекты и убедиться в его эффективности!
Делитесь в чате используете ли вы пакетом safe_device?
Please open Telegram to view this post
VIEW IN TELEGRAM
Полезные посты и статьи марта, которые вы могли пропустить
Hola, Amigos! На выходных провожаем март, и поэтому заранее для вас собрали всё самое интересное в этом месяце. Выбирайте тему и переходите по ссылке.
1️⃣ Обновления Flutter 3.19
2️⃣ Все на BOOST
3️⃣ Виджет MaterialApp для создания графического интерфейса в стиле material design
4️⃣ Кейс: Приложение для АЗС за 2 месяца
5️⃣ Полезный пакет safe_device
Полезные пакеты вы всегда найдёте по тэгу #пп.
Всем хорошего кода!🙂
Hola, Amigos! На выходных провожаем март, и поэтому заранее для вас собрали всё самое интересное в этом месяце. Выбирайте тему и переходите по ссылке.
Полезные пакеты вы всегда найдёте по тэгу #пп.
Всем хорошего кода!
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Записки мобильного разработчика
Hola, Amigos! На связи Саша Чаплыгин, Flutter-dev агентства продуктовой разработки Amiga. Сегодня мы вновь займемся практикой!🙂
Недавно у меня в работе возникла задача: в приложении есть блок с уведомлениями, и согласно техническому заданию, необходимо отправить запрос на сервер, когда плитка в списке уведомлений становится видимой на экране, чтобы пометить уведомление как прочитанное.
В новой статье на Habr я рассказал о том, как определить положение объекта на экране с помощью пакета visibility_detector. Это может быть полезно, когда мы хотим понять, виден тот или иной виджет на экране в данный момент или нет.
Читайте по ссылке и делитесь в чате о своем опыте применения пакета⚙️
Hola, Amigos! На связи Саша Чаплыгин, Flutter-dev агентства продуктовой разработки Amiga. Сегодня мы вновь займемся практикой!
Недавно у меня в работе возникла задача: в приложении есть блок с уведомлениями, и согласно техническому заданию, необходимо отправить запрос на сервер, когда плитка в списке уведомлений становится видимой на экране, чтобы пометить уведомление как прочитанное.
В новой статье на Habr я рассказал о том, как определить положение объекта на экране с помощью пакета visibility_detector. Это может быть полезно, когда мы хотим понять, виден тот или иной виджет на экране в данный момент или нет.
Читайте по ссылке и делитесь в чате о своем опыте применения пакета
Please open Telegram to view this post
VIEW IN TELEGRAM
Обзор pin_code_fields
Hola, Amigos! С вами Владимир Зевеке, Flutter dev Amiga. Сегодня расскажу про пакет pin_code_fields и его применение на практике.
Пакет полезен для авторизации в приложении по номеру телефона. Я использвовал пакет в NDA проекте из сферы здоровья. Но авторизация по одноразовому коду также часто встречается в приложениях банков, e-com, услуг доставки и др.
Переходите на Habr и читайте статью! Дайте знать, если будет полезно🙂
И делитесь в чате, в каких проектах вы использовали пакет pin_code_fields?
Hola, Amigos! С вами Владимир Зевеке, Flutter dev Amiga. Сегодня расскажу про пакет pin_code_fields и его применение на практике.
Пакет полезен для авторизации в приложении по номеру телефона. Я использвовал пакет в NDA проекте из сферы здоровья. Но авторизация по одноразовому коду также часто встречается в приложениях банков, e-com, услуг доставки и др.
Переходите на Habr и читайте статью! Дайте знать, если будет полезно
И делитесь в чате, в каких проектах вы использовали пакет pin_code_fields?
Please open Telegram to view this post
VIEW IN TELEGRAM
Записки мобильного разработчика
Hola, Amigos! На связи Владимир Зевеке, Flutter dev Amiga. Ранее я рассказывал о том, как интегрировать штрих-коды в приложение Flutter. Сегодня хочу поделиться пакетом screen_brightness, который помогает управлять яркостью экрана. В моём случае, этот виджет понадобился для более эффективной работы другого пакета barcode.
Обратите внимание, что screen_brightness работает только на реальных устройствах, на эмуляторе пакет функционировать не будет⚙️
Давайте перейдем к практике: в нашем приложении есть страница, которая должна быть всегда яркой на 70%. Если при переходе на нее экран тусклый, то мы должны поднять яркость до тех самых 70%.
Сделаем это в отдельном методе, который мы будем вызывать в initState().
Перед изменением уровня яркости экрана, старый показатель мы записали в переменную brightness, чтобы вернуть пользовательские настройки яркости, когда покинем эту страницу.
Таким образом мы можем изменять по своему усмотрению системные настройки яркости в приложении⚙️
Пишите в чате, если было полезно!
Hola, Amigos! На связи Владимир Зевеке, Flutter dev Amiga. Ранее я рассказывал о том, как интегрировать штрих-коды в приложение Flutter. Сегодня хочу поделиться пакетом screen_brightness, который помогает управлять яркостью экрана. В моём случае, этот виджет понадобился для более эффективной работы другого пакета barcode.
Обратите внимание, что screen_brightness работает только на реальных устройствах, на эмуляторе пакет функционировать не будет
Давайте перейдем к практике: в нашем приложении есть страница, которая должна быть всегда яркой на 70%. Если при переходе на нее экран тусклый, то мы должны поднять яркость до тех самых 70%.
Сделаем это в отдельном методе, который мы будем вызывать в initState().
double brightness = 1.0;
@override
void initState() {
initBrightness();
super.initState();
}
Future<void> initBrightness() async {
brightness = await FlutterScreenWake.brightness;
if (brightness < 0.7) {
await FlutterScreenWake.setBrightness(0.7);
}
}
Перед изменением уровня яркости экрана, старый показатель мы записали в переменную brightness, чтобы вернуть пользовательские настройки яркости, когда покинем эту страницу.
return Material(
child: PopScope(
onPopInvoked: (value) async {
await FlutterScreenWake.setBrightness(brightness);
},
child: Scaffold(
appBar: AppBar(
backgroundColor: const Color(0xFF1A1A18),
leading: InkWell(
onTap: () async {
await FlutterScreenWake.setBrightness(brightness);
if (mounted) {
Navigator.of(context).pop();
}
},
<…>
),
),
body: <…>,
),
),
);
Таким образом мы можем изменять по своему усмотрению системные настройки яркости в приложении
Пишите в чате, если было полезно!
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Home Widget для iOS
Hola, Amigos! На связи Сергей Климович, Mobile Team Lead агентства заказной разработки Amiga. Ранее мы вас знакомили с Home Widget для Android, теперь поговорим про iOS.
Рассмотрим, как WidgetKit можно интегрировать в существующий проект Flutter. В конце статьи вас ждет краткий обзор того, как может выглядеть стилизованная и полностью реализованная версия этой функции с помощью Movie Picker.
Переходите по ссылке и читайте статью. Пишите в чате об опыте работы с Home Widget!
Hola, Amigos! На связи Сергей Климович, Mobile Team Lead агентства заказной разработки Amiga. Ранее мы вас знакомили с Home Widget для Android, теперь поговорим про iOS.
Рассмотрим, как WidgetKit можно интегрировать в существующий проект Flutter. В конце статьи вас ждет краткий обзор того, как может выглядеть стилизованная и полностью реализованная версия этой функции с помощью Movie Picker.
Переходите по ссылке и читайте статью. Пишите в чате об опыте работы с Home Widget!
Вакансия Middle Flutter-разработчика в Amiga
Hola, Amigos! Наша команда находится в поисках Flutter-разработчика. Может быть, это именно ты — наш дорогой подписчик?
Что нужно делать:
⚙️ верстать экраны и реализовывать анимации;
⚙️ писать бизнес-логику для компонентов;
⚙️ подключать приложения к API;
⚙️ заниматься интеграцией со сторонними сервисами.
Что мы предлагаем:
⚙️ лофт-офис в центре Москвы;
⚙️ гибрид или удаленка;
⚙️ крупные заказчики и интересные кейсы;
⚙️ оформление по ТК РФ.
Мы подходим друг другу, если ты хочешь быть частью молодой команды с амбициозными целями и большими планами!
Знакомьтесь с вакансией по ссылке и откликайтесь! Не забудьте указать в сопроводительном письме, что узнали о вакансии из Flutter. Много🙂
Присоединяйся к нашей команде❤️
Hola, Amigos! Наша команда находится в поисках Flutter-разработчика. Может быть, это именно ты — наш дорогой подписчик?
Что нужно делать:
Что мы предлагаем:
Мы подходим друг другу, если ты хочешь быть частью молодой команды с амбициозными целями и большими планами!
Знакомьтесь с вакансией по ссылке и откликайтесь! Не забудьте указать в сопроводительном письме, что узнали о вакансии из Flutter. Много
Присоединяйся к нашей команде
Please open Telegram to view this post
VIEW IN TELEGRAM
Hola, Amigos! На связи Саша Чаплыгин, Flutter dev Amiga. Сегодня расскажу про пакет get_it для управления зависимостями в приложении. Он основан на паттерне «Service Locator», что позволяет создавать и регистрировать зависимости в централизованном контейнере и получать доступ к ним из любой части приложения.
Покажу, как использовать пакет на примере регистрации синглтона.
Затем используем
И в initState «регистрируем» синглтон.
Теперь, находясь на любой странице приложения, мы можем обратиться к нужному нам репозиторию с помощью
Get It — надежный инструмент для управления зависимостями в ваших приложениях Flutter, обеспечивая удобство, эффективность и чистоту кода.
Пишите о вашем опыте с Get It в чате!
Покажу, как использовать пакет на примере регистрации синглтона.
/// code above
runApp(const VnApp());
}, (e, s) async {});
}
class VnApp extends StatefulWidget {
const VnApp({super.key});
@override
State<VnApp> createState() => _VnAppState();
}
class _VnAppState extends State<VnApp> {
GetIt getIt = GetIt.instance;
Затем используем
MultiRepositoryProvider
и RepositoryProvider
из пакета flutter_bloc для того, чтобы мы смогли обратиться к синглтону из любой части приложения. Переменная router у нас отвечает за навигацию с пакетом go_router.
MultiRepositoryProvider(
providers: [
RepositoryProvider(create: (context) => getIt),
RepositoryProvider(create: (context) => router),
],
И в initState «регистрируем» синглтон.
getIt.registerSingleton(router);
var storage = StorageRepository();
getIt.registerSingleton<StorageRepository>(storage);
Теперь, находясь на любой странице приложения, мы можем обратиться к нужному нам репозиторию с помощью
context.read<GetIt>().get<…>()
.
class MainPage extends StatelessWidget {
const MainPage({super.key});
@override
Widget build(BuildContext context) {
return BlocProvider(
create: (context) => MainBloc(
pageState: PageState(),
mainRepository: context.read<GetIt>().get<MainRepository>(),
profileRepository: context.read<GetIt>().get<ProfileRepository>(),
),
Get It — надежный инструмент для управления зависимостями в ваших приложениях Flutter, обеспечивая удобство, эффективность и чистоту кода.
Пишите о вашем опыте с Get It в чате!
Apple усиливает защиту данных пользователей с 1 мая
Hola, Amigos! Apple ввел новые требования о файле PrivacyInfo.xcprivacy, которое направлено на то, чтобы разработчики явно указывали, какие данные собирают их приложения и для каких целей эти данные используются.
До 1 мая 2024 года все приложения должны быть обновлены и должны содержать файл PrivacyInfo.xcprivacy с корректно заполненной информацией о конфиденциальности.
⚙️ Большинство библиотек уже включают в себя Privacy Manifest. Проверьте обновления для используемых вами библиотек.
Создание файла PrivacyInfo.xcprivacy:
1️⃣ File -> New -> File
2️⃣ Выберите шаблон App Privacy
3️⃣ Выберите таргет вашего проекта или SDK
4️⃣ Назовите файл PrivacyInfo и сохраните
Заполнение файла PrivacyInfo.xcprivacy:
1️⃣ Указать тип данных из письма от Apple (например, местоположение, контакты, фотографии и т.д.)
2️⃣ Найти категорию в документации
3️⃣ Описать, как эти данные используются вашим приложением и обосновать необходимость сбора этих данных
Советы по заполнению:
🔵 Убедитесь, что вы указываете все данные, которые собираете, а также цель сбора данных.
🔵 Будьте честны. Это поможет избежать проблем с проверкой приложения.
🔵 Если вы не знаете, с какой целью в приложении используется определённая категория, вы можете найти в коде конкретные методы.
1 мая уже совсем близко, поэтому советуем убедиться, что вы обновили свои приложения. Всем хорошего кода!🙂
Hola, Amigos! Apple ввел новые требования о файле PrivacyInfo.xcprivacy, которое направлено на то, чтобы разработчики явно указывали, какие данные собирают их приложения и для каких целей эти данные используются.
До 1 мая 2024 года все приложения должны быть обновлены и должны содержать файл PrivacyInfo.xcprivacy с корректно заполненной информацией о конфиденциальности.
Создание файла PrivacyInfo.xcprivacy:
Заполнение файла PrivacyInfo.xcprivacy:
Советы по заполнению:
1 мая уже совсем близко, поэтому советуем убедиться, что вы обновили свои приложения. Всем хорошего кода!
Please open Telegram to view this post
VIEW IN TELEGRAM
Полезные посты и статьи апреля, которые вы могли пропустить
Hola, Amigos! Собрали для вас в одну подборку все полезные посты и статьи апреля, чтобы вам было чем заняться на майских праздниках🙂
Выбирайте, что вам интересно, и переходите по ссылкам.
🔵 Записки мобильного разработчика (пакет visibility_detector)
🔵 Обзор pin_code_fields
🔵 Полезный пакет для управления яркостью экрана
🔵 Home Widget для iOS
🔴 Вакансия Middle Flutter-разработчика в Amiga
🔵 Полезный пакет для управления зависимостями в приложении
🔵 Apple усиливает защиту данных пользователей с 1 мая
Полезные пакеты вы всегда найдёте по тэгу #пп.
Всем хорошего кода!❤️
Hola, Amigos! Собрали для вас в одну подборку все полезные посты и статьи апреля, чтобы вам было чем заняться на майских праздниках
Выбирайте, что вам интересно, и переходите по ссылкам.
Полезные пакеты вы всегда найдёте по тэгу #пп.
Всем хорошего кода!
Please open Telegram to view this post
VIEW IN TELEGRAM
14 мая Google I/O
Hola, Amigos! Грядет одно из самых ожидаемых событий в мире технологий — конференция Google I/O! В этом году она пройдет с 14 по 17 мая и обещает множество захватывающих новостей и анонсов для мобильных разработчиков⚙️
Google I/O — это отличная возможность погрузиться в мир новых технологий, продуктов и инноваций от Google. Для флаттер-разработчиков это особенно важное событие, так как на конференции обычно анонсируются значительные обновления и нововведения в экосистеме Google, включая инструменты и ресурсы для разработки приложений на Flutter.
Конференция проходит офлайн, но у нас будет возможность узнать о новых возможностях и инструментах Flutter в прямом эфире. Регистрируйтесь на официальном сайте Google I/O🙂
Hola, Amigos! Грядет одно из самых ожидаемых событий в мире технологий — конференция Google I/O! В этом году она пройдет с 14 по 17 мая и обещает множество захватывающих новостей и анонсов для мобильных разработчиков
Google I/O — это отличная возможность погрузиться в мир новых технологий, продуктов и инноваций от Google. Для флаттер-разработчиков это особенно важное событие, так как на конференции обычно анонсируются значительные обновления и нововведения в экосистеме Google, включая инструменты и ресурсы для разработки приложений на Flutter.
Конференция проходит офлайн, но у нас будет возможность узнать о новых возможностях и инструментах Flutter в прямом эфире. Регистрируйтесь на официальном сайте Google I/O
Please open Telegram to view this post
VIEW IN TELEGRAM
Обзор Flutter Flow
Hola, Amigos! Сегодня мы поговорим о инструменте Flutter Flow, который поможет вам ускорить и упростить разработку мобильных приложений на Flutter.
Что такое Flutter Flow
Это инструмент для визуальной разработки мобильных приложений на базе Flutter. Он предоставляет удобный веб-интерфейс, позволяющий создавать и настраивать дизайн приложения без необходимости писать код вручную.
Преимущества инструмента
⚙️ Визуальный интерфейс позволяет создавать и редактировать компоненты дизайна приложения без написания кода.
⚙️ Легкое создание и настройка готовых компонентов: кнопки, поля ввода, списки и многое другое.
⚙️ Автоматическая генерация кода позволяет быстро перенести ваш дизайн в реальное приложение.
⚙️ Импорт существующего кода позволяет интегрировать ваш существующий код с визуально созданным интерфейсом.
Практический пример использования
Представим, что у вас есть задача создать экран входа в приложение. С помощью Flutter Flow вы можете:
1️⃣ Добавить элементы ввода для имени пользователя и пароля.
2️⃣ Создать кнопку «Войти», которая будет активировать процесс аутентификации.
3️⃣ Настроить внешний вид элементов, выбрав подходящие цвета, шрифты и стили.
Все это можно сделать в несколько простых шагов, без необходимости писать код.
Создавайте потрясающие Flutter-приложения с Flutter Flow! Экспериментируйте и изучайте все возможности этого инструмента, чтобы сделать вашу разработку еще более эффективной и удобной.
Делитесь в чате, используете ли вы Flutter Flow в работе?
Hola, Amigos! Сегодня мы поговорим о инструменте Flutter Flow, который поможет вам ускорить и упростить разработку мобильных приложений на Flutter.
Что такое Flutter Flow
Это инструмент для визуальной разработки мобильных приложений на базе Flutter. Он предоставляет удобный веб-интерфейс, позволяющий создавать и настраивать дизайн приложения без необходимости писать код вручную.
Преимущества инструмента
Практический пример использования
Представим, что у вас есть задача создать экран входа в приложение. С помощью Flutter Flow вы можете:
Все это можно сделать в несколько простых шагов, без необходимости писать код.
Создавайте потрясающие Flutter-приложения с Flutter Flow! Экспериментируйте и изучайте все возможности этого инструмента, чтобы сделать вашу разработку еще более эффективной и удобной.
Делитесь в чате, используете ли вы Flutter Flow в работе?
Please open Telegram to view this post
VIEW IN TELEGRAM
Рейтинг мобильных разработчиков России по выручке в 2023 году
Hola, Amigos! Ну что, пошла жара! Рейтинг Digirate опубликовал результаты ииии… *барабанная дробь*
Amiga заняла 8 место среди компаний мобильных разработчиков по выручке в 2023 году❤️
Это не может не радовать, ведь нам всего 3 года! Честно признаться, когда мы погружаемся в рутину, то думаем, что за 3 года можно было и лучше. Но когда мы смотрим на цифры,а цифры никогда не лгут , то понимаем, что растем космически!
И останавливаться не собираемся. Уверенно стремимся в ТОП!
А если хочешь вместе с нами, то присоединяйся к нашей команде.
Hola, Amigos! Ну что, пошла жара! Рейтинг Digirate опубликовал результаты ииии… *барабанная дробь*
Amiga заняла 8 место среди компаний мобильных разработчиков по выручке в 2023 году
Это не может не радовать, ведь нам всего 3 года! Честно признаться, когда мы погружаемся в рутину, то думаем, что за 3 года можно было и лучше. Но когда мы смотрим на цифры,
И останавливаться не собираемся. Уверенно стремимся в ТОП!
А если хочешь вместе с нами, то присоединяйся к нашей команде.
Please open Telegram to view this post
VIEW IN TELEGRAM
Hola, Amigos! Сегодняшнего дня с нетерпением ждали все IT компании. Подготовка к Рейтингу Рунета, без преувеличений, длится целый год. Апрель выдался сумасшедшим, потому что нововведения сыпались на почту каждый день. В прямом смысле, хотелось рвать волосы на голове🤪
Но нужно отдать должное всем организаторам Рейтинга, ведь с каждым годом он становится всё прозрачнее и серьезнее, что позволяет заказчикам видеть ясную картину рынка заказной разработки. А также хотелось бы выразить благодарность за оперативные ответы, советы и разъяснения🙏
Что ж, перейдем к нашим победам:
1 место среди молодых разработчиков мобильных приложений
1 место среди молодых digital-подрядчиков крупнейших компаний
2 место среди разработчиков мобильных приложений для оптовой и розничной торговли
3 место среди компаний по анализу и тестированию мобильных приложений
4 место среди разработчиков мобильных приложений для промышленности и оборудования
5 место среди разработчиков приложений для услуг
6 место среди мобильных разработчиков Москвы
21 место среди мобильных разработчиков России
Мы сильно поднялись в этом году! Невероятно гордимся командой и радуемся результатам рейтинга 2024 года. Принимаем ваши поздравления в комментариях и поднимаем бокальчик шампанского!
Страшно представить, что будет на 4 году Amiga. Страшно интересно!😏
Но нужно отдать должное всем организаторам Рейтинга, ведь с каждым годом он становится всё прозрачнее и серьезнее, что позволяет заказчикам видеть ясную картину рынка заказной разработки. А также хотелось бы выразить благодарность за оперативные ответы, советы и разъяснения🙏
Что ж, перейдем к нашим победам:
1 место среди молодых разработчиков мобильных приложений
1 место среди молодых digital-подрядчиков крупнейших компаний
2 место среди разработчиков мобильных приложений для оптовой и розничной торговли
3 место среди компаний по анализу и тестированию мобильных приложений
4 место среди разработчиков мобильных приложений для промышленности и оборудования
5 место среди разработчиков приложений для услуг
6 место среди мобильных разработчиков Москвы
21 место среди мобильных разработчиков России
Мы сильно поднялись в этом году! Невероятно гордимся командой и радуемся результатам рейтинга 2024 года. Принимаем ваши поздравления в комментариях и поднимаем бокальчик шампанского!
Страшно представить, что будет на 4 году Amiga. Страшно интересно!😏
This media is not supported in your browser
VIEW IN TELEGRAM
Макросы Dart: повышение уровня абстракции разработки
Hola, Amigos! Недавно прошла конфа Google I/O 2024, на которой было представлено множество новинок, но сегодня поговорим о нашумевшей фиче — Макросы Dart. Кто не смотрел прямой эфир, сейчас расскажем, в чем соль.
Долгое время болевой точкой для разработчиков Dart была тривиальная, но утомительная схема сериализации и десериализации JSON-данных. Создание многократно используемого и достаточно мощного решения является сложной задачей в Dart, поскольку он не поддерживает рефлексию во время выполнения по соображениям производительности. В качестве альтернативы мы прибегаем к решениям по генерации кода, таким как JsonSerializable. Они зависят от внешних инструментов, которые запускаются перед самим кодом, что усложняет работу разработчика.
На конференции анонсировали предварительную версию радикально нового подхода к сериализации и десериализации JSON: макроса JsonCodable.
Как это работает? Откуда взялся метод toJson() (и сопутствующий ему конструктор fromJson())?
Это экспериментальная реализация новой системы макросов, призванной упростить работу разработчиков. Когда компилятор Dart видит аннотацию @JsonCodable(), он немедленно находит определение макроса JsonCodable в реальном времени и начинает его выполнять. Вот как работает макрос:
1️⃣ Создайте новый класс - новую конструкцию языка, которая позволяет добавлять новые объявления к существующим классам.
2️⃣ Прочитайте определение класса Vehicle, данное разработчиком, и определите, что у него есть два поля - description и wheels.
3️⃣ Добавьте новую сигнатуру метода toJson в класс дополнения.
4️⃣ Заполните тело метода toJson, чтобы обработать сериализацию полей description и wheels.
Всё это происходит без задержек и интегрировано в существующие рабочие процессы разработчиков, такие как горячая перезагрузка, как показано в скринкасте.
Как вам такие новости? Делитесь в чате своими мыслями.
Hola, Amigos! Недавно прошла конфа Google I/O 2024, на которой было представлено множество новинок, но сегодня поговорим о нашумевшей фиче — Макросы Dart. Кто не смотрел прямой эфир, сейчас расскажем, в чем соль.
Долгое время болевой точкой для разработчиков Dart была тривиальная, но утомительная схема сериализации и десериализации JSON-данных. Создание многократно используемого и достаточно мощного решения является сложной задачей в Dart, поскольку он не поддерживает рефлексию во время выполнения по соображениям производительности. В качестве альтернативы мы прибегаем к решениям по генерации кода, таким как JsonSerializable. Они зависят от внешних инструментов, которые запускаются перед самим кодом, что усложняет работу разработчика.
На конференции анонсировали предварительную версию радикально нового подхода к сериализации и десериализации JSON: макроса JsonCodable.
Как это работает? Откуда взялся метод toJson() (и сопутствующий ему конструктор fromJson())?
Это экспериментальная реализация новой системы макросов, призванной упростить работу разработчиков. Когда компилятор Dart видит аннотацию @JsonCodable(), он немедленно находит определение макроса JsonCodable в реальном времени и начинает его выполнять. Вот как работает макрос:
Всё это происходит без задержек и интегрировано в существующие рабочие процессы разработчиков, такие как горячая перезагрузка, как показано в скринкасте.
Как вам такие новости? Делитесь в чате своими мыслями.
Please open Telegram to view this post
VIEW IN TELEGRAM
Hola, Amigos! На связи Вова Зевеке, сегодня расскажу про пакет pod_player.
Ранее в своей статье я пробовал собрать кастомный видеоплеер с помощью пакета youtube_player_flutter. По итогу упёрся в баги, которые нельзя было решить возможностями Flutter. И нашёл замену!
Сам по себе pod_player не сильно отличается от большинства других пакетов для разработки видеоплеера. Однако, он куда меньше тормозит и быстрее грузит видео.
Сначала настроим необходимые разрешения. Для Android, нужно добавить в AndroidManifest.xml:
Если видео использует URL-адреса http, то добавляем:
Для iOS проводим настройку в файле Info.plist:
Пакет добавляет виджет PodVideoPlayer со свойствами:
- controller (PodPlayerController, контроллер для управления видеплеером);
- podProgressBarConfig (PodProgressBarConfig, настройка вёрстки полоски прогресса);
- videoThumbnail (DecorationImage?, превью видео);
- alwaysShowProgressBar (bool, определяет, будет ли всегда отображаться полоска прогресса);
- onToggleFullScreen (Future<void> Function(bool)?, коллбек при переходе плеера в полноэкранный режим);
- onLoading (Widget Function(BuildContext)?, определяет отображаемый виджет при загрузке видео);
- onVideoError (Widget Function()?, определяет отображаемый виджет при ошибке в видео);
- overlayBuilder (Widget Function(OverLayOptions)?, позволяет сделать кастомный интерфейс видеоплеера).
Чтобы плеер проигрывал определённое видео, нужно приложить ссылку на него в виде файла, веб-ссылки, youtube-id, ассет в приложении.
Код с примером пользования youtube-id:
Всем хорошего кода! Делитесь в чате своим опытом.
Ранее в своей статье я пробовал собрать кастомный видеоплеер с помощью пакета youtube_player_flutter. По итогу упёрся в баги, которые нельзя было решить возможностями Flutter. И нашёл замену!
Сам по себе pod_player не сильно отличается от большинства других пакетов для разработки видеоплеера. Однако, он куда меньше тормозит и быстрее грузит видео.
Сначала настроим необходимые разрешения. Для Android, нужно добавить в AndroidManifest.xml:
<uses-permission android:name="android.permission.INTERNET"/>
Если видео использует URL-адреса http, то добавляем:
<application
- - -
- - - - - -
android:usesCleartextTraffic="true"
Для iOS проводим настройку в файле Info.plist:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
Пакет добавляет виджет PodVideoPlayer со свойствами:
- controller (PodPlayerController, контроллер для управления видеплеером);
- podProgressBarConfig (PodProgressBarConfig, настройка вёрстки полоски прогресса);
- videoThumbnail (DecorationImage?, превью видео);
- alwaysShowProgressBar (bool, определяет, будет ли всегда отображаться полоска прогресса);
- onToggleFullScreen (Future<void> Function(bool)?, коллбек при переходе плеера в полноэкранный режим);
- onLoading (Widget Function(BuildContext)?, определяет отображаемый виджет при загрузке видео);
- onVideoError (Widget Function()?, определяет отображаемый виджет при ошибке в видео);
- overlayBuilder (Widget Function(OverLayOptions)?, позволяет сделать кастомный интерфейс видеоплеера).
Чтобы плеер проигрывал определённое видео, нужно приложить ссылку на него в виде файла, веб-ссылки, youtube-id, ассет в приложении.
Код с примером пользования youtube-id:
@override
void initState() {
controller = PodPlayerController(
playVideoFrom: PlayVideoFrom.youtube(
widget.videoId,
),
)..initialise();
…
}
…
body: PodVideoPlayer(controller: controller),
…
Всем хорошего кода! Делитесь в чате своим опытом.
Hola, Amigos! На связи команда Amiga.
Docker Hub прекратил работу на территории России. Это значит, что многие из нас могут столкнуться с проблемами при доступе к важным контейнерам и образам.
Чтобы минимизировать неудобства, предлагаем рассмотреть следующие решения:
1️⃣ Зеркала и альтернативы: Используйте зеркала Docker Hub или локальные репозитории для хранения и получения образов.
Рабочее проверенное решение: huecker.io
2️⃣ VPN: Для обхода блокировки можно воспользоваться VPN-сервисами. Это поможет получить доступ к Docker Hub с российской территории.
3️⃣ Локальные решения: Разверните свои собственные локальные Docker-реестры, чтобы хранить и управлять образами в пределах вашей инфраструктуры.
Если у вас есть другие идеи или решения, делитесь в чате!
Будем рады любой информации, которая поможет всем нам продолжать работать эффективно и без перебоев🙂
Docker Hub прекратил работу на территории России. Это значит, что многие из нас могут столкнуться с проблемами при доступе к важным контейнерам и образам.
Чтобы минимизировать неудобства, предлагаем рассмотреть следующие решения:
Рабочее проверенное решение: huecker.io
Если у вас есть другие идеи или решения, делитесь в чате!
Будем рады любой информации, которая поможет всем нам продолжать работать эффективно и без перебоев
Please open Telegram to view this post
VIEW IN TELEGRAM