Flutter Pulse
614 subscribers
395 photos
868 links
На канале будут новости про flutter с сайтов, информация об обновлении пакетов, а также авторский контент.
Download Telegram
Новые пакеты за неделю

broadcast_bloc
Плагин для расширения библиотеки bloc для управления состоянием, добавляя поддержку широковещательного распространения изменений состояния по потоковым каналам.
👍 Лайки: 26, 📥 Скачиваний: 270
https://pub.dev/packages/broadcast_bloc

ispectify_db
Пакет для пассивной регистрации операций с базами данных без изменения существующего кода. Он поддерживает различные базы данных и хранилища ключ-значение.
👍 Лайки: 1, 📥 Скачиваний: 435
https://pub.dev/packages/ispectify_db

voo_tokens
Пакет предоставляет систему дизайн-токенов для VooFlutter, включая отзывчивое расстояние, типографику, радиус, возвышение и токены анимации.
👍 Лайки: 1, 📥 Скачиваний: 424
https://pub.dev/packages/voo_tokens

universal_images_plus
Пакет для Flutter позволяет легко загружать любые типы изображений, включая сеть, активы, SVG, Base64 и даже fallback-плейсхолдер, с помощью одного виджета.
👍 Лайки: 12, 📥 Скачиваний: 0
https://pub.dev/packages/universal_images_plus

Motor
Унифицированная система движения, которая объединяет физические пружины, кривые на основе продолжительности и систему анимаций Flutter под одним последовательным API.
👍 Лайки: 106, 📥 Скачиваний: 7.1К
https://pub.dev/packages/motor

colored_dio_logger
Dio-интерцептор, который предоставляет красиво оформленные и цветные логи для ваших HTTP-запросов, ответов и ошибок.
👍 Лайки: 8, 📥 Скачиваний: 0
https://pub.dev/packages/colored_dio_logger

#Flutter #Dart #PubDev #FlutterPulse #FlutterPulseBestNewPackages #broadcast_bloc #ispectify_db #voo_tokens #universal_images_plus #Motor #colored_dio_logger
Flutter Pulse
🎨 Vibe coding: Создаём приложение для скетчей с нуля вместе с ИИ! Привет, Flutter-разработчики! 👋 Сегодня мы делимся крутым видео, которое точно стоит вашего внимания. Руслан Цицер начинает новый практический цикл по созданию приложения для скетчей с использованием…
🎨 Vibe coding. Приложение для скрипинга с нуля. Часть 2

Продолжаем наше погружение в увлекательный мир vibe coding! 🚀 В этом выпуске Руслан берет нашу заготовку с рисованием линий и превращает ее в нечто по-настоящему волшебное.

Хотели ли вы, чтобы ваш простой скетч превратился в полноценную, стилизованную картинку? Теперь это реальность!

В этом выпуске вы увидите:
🔹 Как добавить кнопку «Сгенерировать» и реализовать логику захвата текущего рисунка
🔹 Работу с RepaintBoundary для преобразования canvas в изображение
🔹 Самое интересное — интеграцию с мощным AI Gemini от Google через REST API для генерации картинок!
🔹 Практические примеры: как простой набросок котика 🐱 превращается в крутой арт

Это не просто теория — наш подписчик Руслан Цицер проходит каждый шаг, от настройки Dart defines для безопасного хранения API-ключа до обработки ответов от нейросети и отображения результата прямо в приложении.

Хотите узнать, как опубликовать такое приложение или есть идеи для улучшения? Обязательно напишите об этом в комментариях! 💬

Смотрите видео здесь 👉 Vibe coding. Приложение для скетчей с нуля. Часть 2

Ищите другие полезные видео по хэштегу #FlutterPulseYoutube!

#Flutter #Dart #FlutterPulse #FlutterPulseTips #FlutterPulseYoutube #Refactoring #CleanCode #FlutterArchitecture #StatefulWidget #ComponentBasedUI #fluttertutorial #ffi #rust
Самые лучшие обновлённые пакеты за последние 24 часа

nfc_manager 4.1.1
Плагин для Flutter, который предоставляет доступ к функциям NFC на Android и iOS.
В обновлении исправлена проблема с ограничениями версии iOS SDK, вызванная добавлением NFCReaderError.Code.
👍 Лайки: 503, 📥 Скачиваний: 37.6К
https://pub.dev/packages/nfc_manager

injectable_generator 2.9.0
Плагин для генерации кода внедрения зависимостей в приложениях Dart и Flutter.
Теперь с обновленными зависимостями и поддержкой Dart 3.8.0.
👍 Лайки: 126, 📥 Скачиваний: 577К
https://pub.dev/packages/injectable_generator

purchases_flutter 9.7.0
Клиент для системы отслеживания подписок и покупок RevenueCat, позволяет легко реализовывать в-app покупки в приложениях Flutter.
В новой версии добавлена возможность установки ID пользователя PostHog, обновлены зависимости и исправлены некоторые ошибки.
👍 Лайки: 843, 📥 Скачиваний: 173К
https://pub.dev/packages/purchases_flutter

video_player_android 2.8.14
Плагин для воспроизведения видео на Android-устройствах.
В новой версии переработана внутренняя логика создания и отслеживания плеера.
👍 Лайки: 30, 📥 Скачиваний: 3.04М
https://pub.dev/packages/video_player_android

injectable 2.5.2
Популярный пакет для внедрения зависимостей в приложениях Dart и Flutter.
В новой версии обновлены ограничения для Dart до ">=3.8.0 <4.0.0".
👍 Лайки: 1400, 📥 Скачиваний: 643К
https://pub.dev/packages/injectable

#flutter #dart #pubdev #FlutterPulse #FlutterPulseBestPackages #nfc_manager #injectable_generator #purchases_flutter #video_player_android #injectable
👍1
Single execution Future Builder

FutureBuilder с единственным выполнением

FutureBuilder будет выполнять наше будущее при каждой пересборке. Если это будущее выполняет вызов API, это может быть дорогостоящим и перегружать наш бэкэнд.

Мы предоставляем Future функцию, которая предотвращает повторное выполнение Future при каждой пересборке страницы.



typedef AsyncFutureBuilder<T> = Future<T> Function();

class SingleExecFutureBuilder<T> extends StatefulWidget {
final AsyncFutureBuilder<T> future;
final Widget Function(BuildContext context, T data) builder;

const SingleExecFutureBuilder({
super.key,
required this.future,
required this.builder,
});

@override
State<SingleExecFutureBuilder<T>> createState() => _SingleExecFutureBuilderState<T>();
}

class _SingleExecFutureBuilderState<T> extends State<SingleExecFutureBuilder<T>> {
T? _futureRes;
late FutureState _futureState;

@override
void initState() {
super.initState();
_futureState = FutureState.pending;
}

Future<T?> executeFuture() async {
if (_futureState == FutureState.pending) {
try {
_futureRes = await widget.future();
_futureState = FutureState.done;
return _futureRes;
} catch (e) {
_futureState = FutureState.error;
rethrow;
}
}
return _futureRes;
}

@override
Widget build(BuildContext context) {
return FutureBuilder<T>(
future: executeFuture(),
builder: (context, snapshot) {
if (snapshot.connectionState != ConnectionState.done) {
return const SizedBox.shrink();
}
return widget.builder(context, snapshot.data as T);
},
);
}
}

enum FutureState { pending, done, error }



Пример использования:


@override
Widget build(BuildContext context) {
return Scaffold(
body: Padding(
padding: const EdgeInsets.all(16),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
Text('Count: $count'),
const SizedBox(height: 16),
SingleExecFutureBuilder<String>(
future: () async {
print("Getting future once");
await Future.delayed(const Duration(milliseconds: 1100));
return "Hello";
},
builder: (context, data) => Text(data),
),
const SizedBox(height: 16),
ElevatedButton(
onPressed: () {
setState(() {
count++;
});
},
child: const Text('+'),
),
],
),
),
);
}



Выполните этот код, и вы увидите "Getting future once" только один раз, вместо того, чтобы видеть это каждый раз, когда вы нажимаете кнопку "+".


Оцените новую рубрику по Flutter советам! 👍💬 Нам важно ваше мнение, чтобы мы могли улучшать контент для вас! 😊👍

Все подобные новости можно найти по хэштегу #FlutterPulseTips

#flutter #dart #flutterpulse #FlutterPulseTips #MobileDevelopment #FutureBuilder #FlutterTips #CodingTips #AppDevelopment
👍3
Обзор пакетов на тему IoT, Special Hardware & Chips 📢
Пакет easy_onvif (v3.1.3) позволяет интегрировать ONVIF-совместимые устройства в ваши приложения.
Возможности: управление PTZ, пресетами, потоком видео и аудио, доступ к информации о устройстве и многое другое!
👍 37 лайков, 761 скачиваний. Обновлено 3 месяца назад.
https://pub.dev/packages/easy_onvif 📈
#easy_onvif #flutter #dart #pubdev #flutterpulse #flutterpulsethemedpackages

ROHD: Новый фреймворк для разработки и верификации аппаратного обеспечения на Dart!
Преимущества: мощный язык Dart, упрощает разработку и отладку валидационных тестов, легко интегрировать IP-компоненты и многое другое!
📈 18 лайков, 5530 скачиваний.
https://pub.dev/packages/rohd 📅
#ROHD #flutter #dart #pubdev #flutterpulse #flutterpulsethemedpackages

nordic_dfu обновлен до версии 7.0.0!
Теперь пакет поддерживает параллельное обновление прошивки на нескольких устройствах nrf51/nrf52 от Nordic Semiconductor.
👍 44 лайка, 2960 скачиваний. Обновлено 9 месяцев назад.
https://pub.dev/packages/nordic_dfu 👍
#nordic_dfu #flutter #dart #pubdev #flutterpulse #flutterpulsethemedpackages

esp_smartconfig 3.0.0 - Dart-реализация EspTouch для настройки Wi-Fi устройств.
👍 45 | 📦 656 | 4 месяца назад
https://pub.dev/packages/esp_smartconfig 📡
#esp_smartconfig #flutter #dart #pubdev #flutterpulse #flutterpulsethemedpackages

Flutter Hue 2.3.0: Управляйте Philips Hue из своего Flutter-приложения!
Возможности: обнаружение мостов Hue, управление светильниками, работа с группами и многое другое!
👍 27 лайков, 319 скачиваний. Обновлено 6 месяцев назад.
https://pub.dev/packages/flutter_hue 🚀
#FlutterHue #flutter #dart #pubdev #flutterpulse #flutterpulsethemedpackages

dart_periphery 0.9.19 - Dart-ported c-periphery для доступа к периферийным устройствам Linux!
🔌 GPIO, LED, PWM, SPI, I2C, MMIO и Serial.
📈 70 лайков, 6080 скачиваний. Обновлено 2 дня назад.
https://pub.dev/packages/dart_periphery 📚
#dart_periphery #flutter #dart #pubdev #flutterpulse #flutterpulsethemedpackages
👍1
Привет, друзья! 👋 Сегодня мы поговорим об адаптивной верстке в мобильных приложениях 📱. Это очень важная тема, поскольку устройства пользователей могут быть абсолютно разными 🤯.
Чтобы верстка не ломалась и не падала в ошибку, можно использовать 5 самых полезных и универсальных виджетов 🤩:
1. MediaQuery 📊 - для получения данных об устройстве.
2. OrientationBuilder 🔄 - для отслеживания ориентации экрана.
3. LayoutBuilder 📈 - для отслеживания изменений размеров родительского виджета.
4. AspectRatio 📐 - для задания соотношения сторон дочернему виджету.
5. ConstrainedBox 📦 - для ограничения размеров дочерних виджетов.
И, конечно же, не забываем про базовые flex-виджеты - Flexible и Expanded 🤝.
Хотите узнать больше? 🤔 Полная новость здесь, а все главные новости и обновлений из мира Flutter и Dart, конечно же на нашем канале flutterpulse 📣 💻 #flutter #dart #flutterpulse 💬 Делитесь своими советами по адаптивной верстке в комментариях! 💬
Самые лучшие обновлённые пакеты за последние 24 часа

flutter_riverpod 3.0.1
Плагин для реактивного кэширования и привязки данных, теперь ChangeNotifierProviderFamily доступен в legacy.dart, а также добавлена поддержка Dart 3.7.0.
👍 Лайки: 2750, 📥 Скачиваний: 2.7M
https://pub.dev/packages/flutter_riverpod

dart_frog 1.2.4
Быстрый и минималистичный фреймворк для создания бэкенда на Dart, теперь ещё быстрее благодаря оптимизации Request.read.
👍 Лайки: 814, 📥 Скачиваний: 26.3К
https://pub.dev/packages/dart_frog

hooks_riverpod 3.0.1
Теперь ChangeNotifierProviderFamily доступен в flutter_riverpod/legacy.dart, а также добавлена поддержка Dart 3.7.0.
👍 Лайки: 910, 📥 Скачиваний: 269К
https://pub.dev/packages/hooks_riverpod

Riverpod 3.0.1
Реактивный фреймворк для кэширования и привязки данных, облегчающий работу с асинхронным кодом, теперь поддерживает Dart 3.7.0 и async 2.12.0.
👍 Лайки: 3780, 📥 Скачиваний: 2.8M
https://pub.dev/packages/riverpod

riverpod_annotation 3.0.1
Пакет используется для аннотаций в riverpod_generator, теперь поддерживает Dart 3.7.0.
👍 Лайки: 160, 📥 Скачиваний: 830К
https://pub.dev/packages/riverpod_annotation

awesome_dialog 3.3.0
Пакет для создания простых и крутых диалогов в Flutter, в новой версии обновлены зависимости rive до версии 0.14.0-dev.8.
👍 Лайки: 1450, 📥 Скачиваний: 18.7К
https://pub.dev/packages/awesome_dialog

#Flutter #Dart #PubDev #FlutterPulse #FlutterPulseBestPackages #flutter_riverpod #dart_frog #hooks_riverpod #Riverpod #riverpod_annotation #awesome_dialog
Полный гайд по golden-тестам во Flutter: зачем нужны и как настроить 📚💻
Знакомьтесь с golden-тестами: автоматизируйте визуальное тестирование интерфейсов и ускорьте разработку 🚀!
Golden-тесты - это инструмент для проверки внешнего вида ваших приложений и поддержания визуальной целостности 📊.
Они особенно полезны для библиотек UI-компонентов, приложений со своей дизайн-системой и Backend Driven UI 📈.
Но когда не стоит использовать golden-тесты? 🤔 Это UI с высокой изменчивостью, «сложные» компоненты и компоненты с анимациями или интерактивными переходами 🔄.

Для решения проблемы платформозависимости в golden-тестировании можно использовать пакет alchemist 🧙‍♂️.
Он улучшает процесс тестирования и позволяет писать эффективные golden-тесты для своих компонентов 📝.
Кстати, golden_toolkit больше не поддерживается, поэтому переходите на alchemist для написания golden-тестов! 🚫

Узнайте, как писать golden-тесты для кнопок в Flutter с помощью Alchemist 📚,
и как создавать golden-тесты для компонентов с разными темами и направлениями текста 🌈.
Также, настройте CI для тестирования Flutter-приложений с помощью GitHub Actions 🚀.

Golden-тесты - это мощный инструмент для автоматизации визуального тестирования и поддержания качества UI 💻.
Итак, не забудьте прочитать статью по ссылке читать здесь,
и узнайте, как настроить и использовать golden-тесты для обеспечения стабильности UI и защиты от регрессий 📊.

#flutter #dart #flutterpulse #goldentests #alchemist #flutterpulse
Привет, программисты! 🤩 Ты когда-нибудь сталкивался с конфликтами библиотек при разработке кроссплатформенных приложений? 🤔 Например, когда ты пытаешься использовать dart:io в веб-приложении или dart:web на мобильном устройстве? 📱👀 Это может привести к ошибкам и проблемам с компиляцией! 💣

Но не волнуйся, у нас есть решение! 🎉 Ты можешь использовать сторонние кроссплатформенные библиотеки, такие как cross_file, или делать условные импорты, чтобы подключать разные реализации под разные платформы. 📈

Например, с помощью cross_file ты можешь создать файловый пикер, который работает на всех платформах! 📁

Или, используя условные импорты, ты можешь подключать разные реализации для grpc в зависимости от платформы! 📊

Хочешь узнать больше? 🤔 Тогда перейди по ссылке и прочитай полную статью! 📚

И не забудь подписаться на наш канал flutterpulse, чтобы быть в курсе всех последних новостей и обновлений в мире Flutter и Dart! 📱💻 #flutter #dart #flutterpulse 🚀💥
Как задать высоту строки внутри колонки

Привет, Flutter-разработчики! 👋 Сегодня мы рассмотрим интересную задачу: как правильно задать высоту строки (Row) внутри колонки (Column). Эта проблема часто возникает при создании адаптивных интерфейсов, и мы разберем, как ее решить с помощью виджета IntrinsicHeight. 📐

Проблема: 🤔
Когда вы пытаетесь разместить Row внутри Column и хотите, чтобы высота Row определялась максимальным размером дочерних элементов, вы можете столкнуться с ошибкой. Flutter требует, чтобы размеры виджетов были ограничены, а Row по умолчанию не имеет ограничений по высоте.

Решение: 💡
Используйте виджет IntrinsicHeight в качестве родителя для Row. Этот виджет устанавливает высоту Row равной максимальному размеру его дочерних элементов.



@override
Widget build(BuildContext context) {
return Scaffold(
body: SafeArea(
child: Column(
children: [
IntrinsicHeight( // Оберните Row в IntrinsicHeight
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.stretch,
mainAxisSize: MainAxisSize.min,
children: [
Expanded(
flex: 2,
child: Container(
color: Colors.red,
padding: const EdgeInsets.all(32.0),
child: const Center(child: Text('Flex 2')),
),
),
Expanded(
flex: 1,
child: Container(
color: Colors.green,
padding: const EdgeInsets.all(32.0),
child: const Center(child: Text('Flex 1')),
),
),
],
),
),
Container(
height: 100,
color: Colors.blue,
child: const Center(child: Text('Контейнер с фиксированной высотой')),
),
],
),
),
);
}



Почему это работает? 🔍
- IntrinsicHeight определяет максимальную внутреннюю высоту дочерних элементов Row и применяет ее ко всем детям.
- CrossAxisAlignment.stretch растягивает дочерние элементы на всю доступную высоту.
- mainAxisSize: MainAxisSize.min устанавливает размер Row по основной оси в минимально необходимый.

Вывод: 🎉
Использование IntrinsicHeight позволяет легко управлять размером Row внутри Column, делая ваш интерфейс гибким и адаптивным. Оцените эту рубрику и оставляйте свои комментарии! 💬

Все подобные советы вы можете найти по хэштегу #FlutterPulseTips. 👉 Оцените новую рубрику и подпишитесь на наш канал! 👍

#flutter #dart #flutterpulse #FlutterPulseTips #MobileDevelopment #UIUX #FlutterTips #AppDevelopment #CodingTips
👍1
Обзор пакетов на тему Dropdown 📦
Пакет DropDownSearchField (1.2.2) позволяет создавать автозаполняемые поля поиска с подсказками, которые отображаются по мере ввода текста.
👍 Лайки: 70, 📥 Скачиваний: 42.2К
Последнее обновление 📅 22 дня назад
https://pub.dev/packages/drop_down_search_field

Пакет drop_down_list (2.0.0) предлагает удобный и настраиваемый виджет выпадающего списка для Flutter.
👍 Лайки: 337, 📥 Скачиваний: 3.6К
Последнее обновление 📅 8 месяцев назад
https://pub.dev/packages/drop_down_list

Пакет MultiDropdown (3.0.1) позволяет легко управлять и искать несколько элементов в выпадающем списке.
👍 Лайки: 362, 📥 Скачиваний: 33.2К
Последнее обновление 📅 13 месяцев назад
https://pub.dev/packages/multi_dropdown

Пакет cool_dropdown (2.1.1) предлагает кастомизируемый и анимированный дропдаун для ваших Flutter-приложений.
👍 Лайки: 206, 📥 Скачиваний: 2.4К
Последнее обновление 📅 13 месяцев назад
https://pub.dev/packages/cool_dropdown

Пакет DropdownSearch (6.0.2) позволяет легко создавать реактивные выпадающие списки с функцией поиска.
👍 Лайки: 1930, 📥 Скачиваний: 239К
Последнее обновление 📅 8 месяцев назад
https://pub.dev/packages/dropdown_search

Пакет Search Choices (2.3.1) - это высоконстраиваемый виджет для поиска в списках в диалоговых окнах или меню.
👍 Лайки: 6190, 📥 Скачиваний: 27.6К
Последнее обновление 📅 9 месяцев назад
https://pub.dev/packages/search_choices
#flutter #dart #pubdev #flutterpulse #flutterpulsethemedpackages #dropdownsearchfield #drop_down_list #MultiDropdown #cool_dropdown #DropdownSearch #SearchChoices
Сегодня мы поговорим об одном из самых популярных плагинов для Flutter-приложений - cached_network_image 📸. Этот плагин позволяет не только загружать и отображать изображения из сети, но и кэшировать их на устройстве 📁. Очень полезная функция, которая может улучшить производительность вашего приложения! 🚀

Как использовать cached_network_image? 🤔 Для начала, вам нужно добавить в верстку виджет CachedNetworkImage и передать ему ссылку на изображение в поле imageUrl 📝. Затем, вы можете настроить индикатор загрузки с помощью placeholder или progressIndicatorBuilder 📊. Также, не забудьте обработать ошибки с помощью errorWidget и errorListener 🚨.

Управление кэшем 📁 - еще одна важная функция cached_network_image. Вы можете использовать cacheManager для очистки кэша, удаления или извлечения файлов из кэша 📝. И, если вам нужно больше контроля над кэшем, вы можете создать свой кастомный менеджер кэша 🤔.

Хотите узнать больше? 🤔 Тогда перейдите по ссылке и прочитайте полную статью 📄. И, не забудьте подписаться на наш канал flutterpulse 📣, чтобы быть в курсе всех последних новостей и обновлений из мира Flutter! 🚀 #flutter #dart #flutterpulse ❤️