Flutter Pulse
432 subscribers
283 photos
579 links
На канале будут новости про flutter с сайтов, информация об обновлении пакетов, а также авторский контент.
Download Telegram
Обзор пакетов на тему Кнопки и Кнопки прогресса 📦

flutter_animated_button 💫
Пакет для создания анимированных кнопок в Flutter. Поддерживает различные типы анимаций и настраиваемые стили.
👍 Лайки: 290, 📥 Скачиваний: 1.9К
Последнее обновление 📅: 6 месяцев назад
https://pub.dev/packages/flutter_animated_button

animated_button 🎉
Пакет позволяет создавать анимированные кнопки с простой анимацией и множеством настраиваемых атрибутов.
👍 Лайки: 160, 📥 Скачиваний: 584
Последнее обновление 📅: 3 месяца назад
https://pub.dev/packages/animated_button

timer_button
Пакет Timer Button позволяет создать кнопку, которая становится активной после задержки времени. Поддерживает различные типы кнопок и настраивается.
👍 Лайки: 83, 📥 Скачиваний: 786
Последнее обновление 📅: 28 дней назад
https://pub.dev/packages/timer_button

easy_loading_button 🔄
Этот пакет позволяет создавать простые и кастомизируемые кнопки загрузки с поддержкой различных стилей (elevated, outlined, text).
👍 Лайки: 58, 📥 Скачиваний: 1.1К
Последнее обновление 📅: 21 дней назад
https://pub.dev/packages/easy_loading_button

pretty_animated_buttons 🎊
Включает 12 красивых анимированных кнопок, которые можно легко настроить.
👍 Лайки: 80, 📥 Скачиваний: 972
Последнее обновление 📅: 10 месяцев назад
https://pub.dev/packages/pretty_animated_buttons

splash 🌟
Пакет содержит альтернативы для стандартных эффектов нажатия кнопок в Flutter. Включает в себя различные стили, такие как WaveSplash, PathSplash, LineSplash и NoSplash.
👍 Лайки: 77, 📥 Скачиваний: 608
Последнее обновление 📅: 8 месяцев назад
https://pub.dev/packages/splash

#flutter #dart #pubdev #flutterpulse #flutterpulsethemedpackages #flutter_animated_button #animated_button #timer_button #easy_loading_button #pretty_animated_buttons #splash
Внимание всем разработчикам! 🚀💻
У нас есть потрясающая новость! 🤩 Friflex только что выпустили Flutter Starter 🔥, и это настоящая революция в мире разработки приложений на Flutter! 🌟

Этот невероятный инструмент упаковывает опыт Friflex в готовый корпоративный шаблон, позволяя вам начинать разработку с чистого и понятного фундамента 🏗️. Что же вы получаете? 🤔

Чистая архитектура: Presentation / Domain / Data — без лишнего хаоса 🌈
Локализация, темы, модульность — готовы к использованию 📦
Стиль кода, который не стыдно показать на ревью 💼
Разделение на сервисы для портирования на разные платформы 📈
Простой DI без лишних пакетов, настроенный навигатор 🚀

Этот инструмент предназначен для всех, кто хочет собирать приложения быстрее, чище, удобнее 🕒. Итак, не ждите! 🔗 Качайте, меняйте название пакета и начинайте добавлять фичи: GitHub Friflex Flutter Starter

Хотите быть в курсе всех последних новостей и обновлений? 🤔 Тогда вам нужно подписаться на flutterpulse 📣, чтобы быть всегда на связи с миром разработки на Flutter! 💻

Данная новость взята отсюда
#flutter #dart #flutterpulse 💜
Лучшие обновленные пакеты за последние 24 часа! 🚀

Sentry 9.1.0
Пакет для отслеживания ошибок и мониторинга производительности в приложениях на основе Dart и Flutter.
Добавлены поддержка отладочных идентификаторов для событий на Flutter Web, улучшенный API для отслеживания времени до полной загрузки страницы (TTID/TTFD) и возможность включения информации о модулях в трассировку стека.
👍 Лайки: 527, 📥 Скачиваний: 701К
https://pub.dev/packages/sentry

Workmanager 0.7.0
Пакет для Flutter, позволяющий выполнять код в фоновом режиме на Android и iOS.
Обновлены минимальные версии Dart SDK, Flutter SDK и iOS, а также зависимости и инструменты для Android и iOS.
👍 Лайки: 2260, 📥 Скачиваний: 63К
https://pub.dev/packages/workmanager

health 13.1.1
Пакет для чтения и записи данных о здоровье из Apple Health и Google Health Connect.
Исправлены ошибки и добавлены новые типы данных о здоровье для iOS.
👍 Лайки: 609, 📥 Скачиваний: 33.2К
https://pub.dev/packages/health

sentry_flutter 9.1.0
Пакет для отслеживания ошибок и мониторинга производительности в приложениях на основе Flutter.
Добавлены поддержка отладочных идентификаторов для событий на Flutter Web, улучшенный API для отслеживания времени до полной загрузки страницы (TTFD) и возможность указывать сообщение при захвате исключений.
👍 Лайки: 994, 📥 Скачиваний: 617К
https://pub.dev/packages/sentry_flutter

asn1lib 1.6.5
Пакет для кодирования и декодирования данных в формате ASN.1 с использованием BER-кодирования.
Обновлена совместимость с Dart SDK 3.0 и выше.
👍 Лайки: 22, 📥 Скачиваний: 1.07М
https://pub.dev/packages/asn1lib

google_sign_in 7.0.0
Пакет для авторизации через Google в приложениях на Flutter.
Произошли значительные изменения API, включая разделение аутентификации и авторизации, а также получение токенов доступа и серверных кодов авторизации через отдельные вызовы.
👍 Лайки: 3390, 📥 Скачиваний: 770К
https://pub.dev/packages/google_sign_in

#Flutter #Dart #pubdev #FlutterPulse #FlutterPulseBestPackages #Sentry #Workmanager #health #sentry_flutter #asn1lib #google_sign_in
🚀 Новости из мира Dart! 🚀
У нас есть свежие обновления о Dart 3.9! 📢
Теперь по умолчанию включен экспериментальный флаг getter-setter-error, который изменит то, как компилятор Dart обрабатывает ошибки, связанные с геттерами и сеттерами 🤔.
До этого, если тип аргумента сеттера не совпадал с возвращаемым геттером типом данных, это приводило к ошибке 🚫.
Но с Dart 3.9 такой код больше не будет считаться ошибкой и может быть собран 🎉!
Еще одним новшеством является флаг sound-flow-analysis, который изменит работу анализа потока с акцентом на sound-null-safety 🔍.
Это значит, что компилятор будет более точным в анализе кода и избавит нас от ложных ошибок 🙌.
Хотите узнать больше о этих фичах? 🤔
Читайте полную новость читать здесь
И не забудьте подписаться на flutterpulse, чтобы быть в курсе всех последних новостей и обновлений из мира программирования 📚!
#flutter #dart #flutterpulse 🚀
🎮🔥 НОВОСТЬ: FlutterPulse представляет — Duit: эффективный Backend-Driven UI фреймворк для Flutter от Никиты Синявина (BetBoom)

На конференции CrossConf 2025 разработчик из компании BetBoom , Никита Синявин , представил свой open-source проект — Duit , мощный и легковесный фреймворк для реализации подхода Backend-Driven UI на Flutter.

💡 Что такое Backend-Driven UI?
Backend-Driven UI — это подход, при котором не только данные, но и структура интерфейса управляется с сервера. Это позволяет:

🚀 Быстро обновлять интерфейс без публикации новых версий в сторах
🧪 Упрощает A/B тестирование и управление фичами
⏱️ Сокращает время выхода продукта на рынок (Time to Market)
Однако у этого подхода есть и свои вызовы:

📉 Зависимость от скорости сети
🐛 Сложности в отладке и тестировании
🔄 Необходимость тонкой настройки обмена данными между клиентом и сервером

🧰 Основные особенности Duit:
1. Контролируемые виджеты
Подходят для динамического обновления UI
Используют StatefulWidget под капотом, но с оптимизациями для производительности
2. Атрибуты
Хранят параметры виджетов (цвет, размер, текст и т.д.)
Позволяют гибко управлять состоянием и внешним видом элементов
3. Драйвер + Контроллер
Драйвер — центральная часть, отвечающая за обработку действий пользователя и взаимодействие с сервером
Контроллер связывает виджеты с логикой драйвера, обеспечивая двустороннюю коммуникацию
4. Поддержка кастомных виджетов
Возможность добавлять собственные виджеты, например, SVG или анимации
Гибкая система регистрации через три этапа: AttributeFactory, ModelFactory, BuildFactory
5. Компоненты
Шаблоны, которые можно переиспользовать, отделяя макет от данных
6. Действия и события
Действия описываются на сервере и выполняются на клиенте
События — результат выполнения действий, могут обновлять состояние UI
7. Анимации
Поддерживаются как implicit, так и explicit анимации
Реализованы через Tween и AnimationController
8. Расширяемый транспортный слой
Поддерживает HTTP и WebSocket
Возможность интеграции сторонних клиентов, таких как Dio
9. Интеграция с нативными приложениями
Возможность использования Duit в нативных iOS/Android приложениях через Flutter Add-to-App

🌟 Почему это важно для Flutter-сообщества?
Duit — первый полноценный open-source фреймворк для Backend-Driven UI, созданный специально под Flutter. Он даёт командам:

Возможность управлять UI удалённо
Высокую скорость доставки изменений
Гибкость в интеграции и расширении
📦 Что дальше?
Фреймворк уже используется в экспериментальном режиме внутри BetBoom. В планах:

Публикация на pub.dev
Улучшение документации
Создание демо-приложения
Расширение поддержки виджетов Flutter
📌 Ссылка на доклад:
Youtube: Duit – как создать эффективный BDUI-фреймворк для Flutter

#FlutterPulse #FlutterDev #BDUI #BackendDrivenUI #Duit #MobileDevelopment #FlutterFramework #OpenSource #CrossConf #FlutterAddToApp #BETBOOM #NickSinyavin
Отслеживание видимости клавиатуры
Без каких-либо плагинов 😉

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

Проблема:
Иногда клавиатура заставляет некоторые элементы контента перемещаться вверх, и вы можете захотеть скрыть определенные элементы на экране, когда пользователь печатает. Я предпочитаю иметь статическую кнопку действия внизу. Однако проблема в том, что эта кнопка может перекрывать поле ввода, пока пользователь печатает. Поэтому я использую метод, чтобы скрыть кнопку действия, когда клавиатура открыта.

Решение:
Для отслеживания состояния клавиатуры мы можем использовать виджет KeyboardVisibility, который не требует установки дополнительных плагинов.



import 'package:flutter/material.dart';

// состояние клавиатуры
enum KeyboardVisibilityState { visible, hidden }

// определение функции слушателя
typedef OnKeyboardStateChanged = void Function(KeyboardVisibilityState state);

// stateful виджет для отслеживания изменения видимости клавиатуры
class KeyboardVisibility extends StatefulWidget {
final Widget child;
final OnKeyboardStateChanged onKeyboardStateChanged;

const KeyboardVisibility({
super.key,
required this.child,
required this.onKeyboardStateChanged,
});

@override
State<KeyboardVisibility> createState() => _KeyboardVisibilityState();
}

class _KeyboardVisibilityState extends State<KeyboardVisibility> with WidgetsBindingObserver {
@override
void initState() {
super.initState();
WidgetsBinding.instance.addObserver(this);
}

@override
void dispose() {
WidgetsBinding.instance.removeObserver(this);
super.dispose();
}

@override
void didChangeMetrics() {
super.didChangeMetrics();
checkState();
}

void checkState() {
final value = WidgetsBinding.instance.platformDispatcher.views.first.viewInsets.bottom;
switch (value != 0.0) {
case true:
widget.onKeyboardStateChanged(KeyboardVisibilityState.visible);
case false:
widget.onKeyboardStateChanged(KeyboardVisibilityState.hidden);
}
}

@override
Widget build(BuildContext context) {
return widget.child;
}
}



Использование:
Виджет KeyboardVisibility можно использовать следующим образом:



KeyboardVisibility(
onKeyboardStateChanged: (state) => _showOrHideBottomAction(state),
child: Form(...),
)



Оцените новую рубрику и напишите свое мнение в комментариях! 👍

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

#flutter #dart #flutterpulse #FlutterPulseTips #MobileDev #UIUX #CodingTips #AppDev #DevTips
Обзор пакетов на тему Clipper & Decoration 📦

Figma Squircle 🎨
Пакет реализует сглаживание углов, как в Figma. Теперь вы можете легко создавать красивые и гладкие прямоугольники с независимым радиусом и сглаживанием для каждого угла.
👍 Лайки: 258, 📥 Скачиваний: 8.3К
Последнее обновление 📅: 3 месяца назад
https://pub.dev/packages/figma_squircle

Dotted Line 🖋️
Пакет позволяет рисовать пунктирные линии в ваших приложениях. Поддерживает настройку направления, толщины, цвета и других параметров.
👍 Лайки: 313, 📥 Скачиваний: 182К
Последнее обновление 📅: 8 месяцев назад
https://pub.dev/packages/dotted_line

Dotted Border 🖌️
Легко добавляйте пунктирные границы вокруг виджетов в ваших Flutter-приложениях. Поддерживает различные типы границ, включая прямоугольные, круглые, овальные и кастомные.
👍 Лайки: 1550, 📥 Скачиваний: 695К
Последнее обновление 📅: 38 дней назад
https://pub.dev/packages/dotted_border

Custom Clippers ✂️
Пакет содержит различные кастомные клипперы для создания уникальных форм и фигур в ваших приложениях.
👍 Лайки: 104, 📥 Скачиваний: 1.8К
Последнее обновление 📅: 45 дней назад
https://pub.dev/packages/custom_clippers

SoftEdgeBlur 🌟
Добавьте эффект мягкого прогрессивного размытия к вашим виджетам. Пакет позволяет настроить тип края, размер размытия, интенсивность и цвет оттенка.
👍 Лайки: 179, 📥 Скачиваний: 10.1К
Последнее обновление 📅: 8 месяцев назад
https://pub.dev/packages/soft_edge_blur

Mobkit Dashed Border 🖋️
Этот пакет позволяет создавать границы с пунктирными линиями и скругленными углами. Вы можете настроить цвет, ширину и радиус углов.
👍 Лайки: 58, 📥 Скачиваний: 16.1К
Последнее обновление 📅: 2 месяца назад
https://pub.dev/packages/mobkit_dashed_border

#flutter #dart #pubdev #flutterpulse #flutterpulsethemedpackages #figmasquircle #dottedline #dottedborder #customclippers #softedgeblur #mobkitdashedborder
🔥 НОВОСТЬ: Что ждёт Dart в ближайшие годы? Станислав Чернышёв делится подробностями

На прошедшей конференции CrossConf 2025 автор книги «Основы Dart» и один из самых узнаваемых экспертов в сообществе, Станислав Чернышёв, выступил с докладом о будущем языка Dart. Он рассказал о ключевых фичах, которые уже находятся в разработке или планируются к внедрению в ближайших версиях. Вот самые важные анонсы:

### 🧠 1. Макросы (Macros) — новый уровень метапрограммирования

Одна из самых долгожданных фич в Dart — макросы — наконец-то приближается к релизу. Они позволят:
- Генерировать код на этапе компиляции.
- Упрощать шаблонную логику (например, сериализацию/десериализацию JSON).
- Делать аргументацию классов и функций без необходимости использования отдельных кодогенераторов.

📌 Макросы будут работать через специальные аннотации и поддерживать три типа:
- type — для работы с типами.
- declaration — для добавления объявлений.
- definition — для изменения поведения существующих сущностей.

⚠️ Важно: макросы не смогут использовать dart:io, dart:isolate и другие небезопасные библиотеки, чтобы избежать нежелательного влияния на систему.

### 🔢 2. Цифровые разделители (Dart 36)

int bigNumber = 1_000_000;


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

### 🎯 3. Wildcards (Dart 37)

Теперь можно использовать _ как имя переменной в callback’ах, без опаски получить ошибку анализа кода:

list.forEach((_, index) {
print(index);
});


Это упростит работу с ненужными параметрами и уменьшит количество "заглушек".

### 🔄 4. Изменяемые ресурсы между изолятами

Разработчики рассматривают возможность передачи изменяемых объектов между изолятами, используя модификатор sharable. Это может радикально изменить подход к многопоточности в Dart и Flutter, особенно в тяжёлых приложениях.

💡 Предполагается, что вместе с этим будет добавлена библиотека dart:concurrent, предоставляющая примитивы синхронизации и безопасной работы с общими ресурсами.

### 🛠 5. Первичные конструкторы (Primary Constructors)

Ещё одна фича, которая поможет писать меньше кода:

class User(primary constructor(this.name, this.age));


Сокращает объявление простых классов, где поля создаются прямо в конструкторе. Также добавлено ключевое слово required для именованных параметров.

### 📦 6. Новые возможности импортов

Появление scoped imports позволит писать меньше повторяющегося кода:

import 'package:mylib/mylib.dart' show Color;

Color red = Color.red; // Теперь работает!


Такой подход упростит работу с перечислениями и статическими методами.

### 💬 7. Интерполяция строк с тегами (String Tags)

var html = htmlTag"<div>$content</div>";


Такие теги позволят обрабатывать строки особым образом, например, экранировать HTML, форматировать SQL-запросы или валидировать регулярные выражения.

### 📐 8. Static Extensions

Фича, которая позволит добавлять новые конструкторы к классам, не изменяя их исходный код:

static extension UserExtensions on User {
User.fromMap(Map<String, dynamic> data) => ...;
}


Отличное решение для расширения сторонних библиотек без fork’ов.

### 🚀 Итого: куда движется Dart?

Dart продолжает эволюционировать, становясь более мощным и выразительным. Фичи вроде макросов и изменяемых ресурсов между изолятами могут сделать язык конкурентоспособным даже в сложных системах. Однако растёт и порог входа: новые разработчики теперь столкнутся с гораздо более сложным инструментарием.

📌 Dart больше не просто язык для Flutter. Он становится полноценным системным языком с широкими возможностями абстракции, метапрограммирования и параллелизма.

🎥 Видео доступно на YouTube
#FlutterPulse #DartLanguage #FlutterDev #FutureOfDart #MacrosInDart #Isolates #StaticExtensions #FlutterCommunity #MobileDevelopment #PotokConf #Dart36 #Dart37 #FlutterNews #DartEvolution #CodeGeneration #DartIsMoreThanFlutter
Создание изображения из виджета

Привет, Flutter-разработчики! 👋 Сегодня мы рассмотрим интересную и полезную тему: создание изображения из любого виджета в вашем приложении. 📸

Шаг 1: Добавьте RepaintBoundary поверх виджета, который хотите экспортировать

Чтобы создать изображение из виджета, сначала нужно обернуть его в RepaintBoundary. Для этого потребуется GlobalKey, который поможет найти нужный виджет в дереве рендеринга.



final GlobalKey _repaintBoundaryKey = GlobalKey();

RepaintBoundary(
key: _repaintBoundaryKey,
child: CustomPaint(
painter: MyPainter(),
...
),
)



Этот ключ позволит нам найти объект рендеринга и вызвать метод toImage. 📚 Для более глубокого понимания можно изучить, что такое Widget tree, Element tree и RenderObject tree.

Шаг 2: Вызовите метод для экспорта изображения в галерею телефона

Теперь напишем функцию, которая будет экспортировать изображение:



import 'package:image_gallery_saver/image_gallery_saver.dart';

Future<void> exportImage() async {
try {
RenderRepaintBoundary boundary = _repaintBoundaryKey.currentContext!.findRenderObject() as RenderRepaintBoundary;
ui.Image image = await boundary.toImage(pixelRatio: 3.0);
ByteData? byteData = await image.toByteData(format: ui.ImageByteFormat.png);
Uint8List pngBytes = byteData!.buffer.asUint8List();

final directory = await getDownloadsDirectory();
final imgName = 'myapp-${DateTime.now().microsecondsSinceEpoch}';
final result = await ImageGallerySaver.saveImage(pngBytes, quality: 100, name: imgName);

if (result['isSuccess']) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('Изображение экспортировано')),
);
}
} catch (e) {
// Обработайте ошибку (покажите сообщение пользователю, сохраните отчет о сбое)
}
}



Мы используем пакет image_gallery_saver, чтобы сохранить изображение в галерею телефона. 📁📸

Оцените новую рубрику и напишите в комментариях, что хотите видеть в следующих постах! 💬

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

#flutter #dart #flutterpulse #FlutterPulseTips #MobileDev #AppDev #CodingTips #UIUX #FlutterTips
🚀 Архитектура Flutter-приложения: Управление зависимостями и жизненным циклом с yx_scope

Привет, Flutter-энтузиасты! 👋 Сегодня делимся суперполезным видео, которое перевернет ваше представление о Dependency Injection (DI) и управлении жизненным циклом в Flutter. Не пропустите разбор библиотеки yx_scope от эксперта Яндекс.Практикума! 💡

👉 Смотреть видео

🔥 Почему это важно?
Устали от:
- Громоздкого кода внедрения зависимостей?
- Проблем с масштабированием модулей?
- "Утечек" памяти из-за неправильного жизненного цикла?

yx_scope решает эти боли! Библиотека:
Гарантирует безопасность DI на этапе компиляции
Работает без генерации кода
Управляет жизненным циклом компонентов "из коробки"
Интегрируется с виджетами Flutter

🎯 Что в видео?
На примере интернет-магазина разбираем:
- Внедрение зависимостей без boilerplate-кода
- Структурирование приложения с независимыми фича-модулями
- Контроль состояния на разных экранах
- Организацию жизненного цикла при навигации
- Сравнение с Kiwi, Injector, Auto Injector, Riverpod, Get_it, и YX_Scope

💡 Вы узнаете:
- Как избежать "мучительно больно" при связывании компонентов (© Дмитрий Золотов)
- Почему глобальные синглтоны — не панацея
- Когда yx_scope выигрывает у аналогов

🚀 Автор: Дмитрий Золотов и Сергей Кольцов (Яндекс-ПРО, Flutter разработчики).

👉 Не просто смотрите — внедряйте! Готовые решения из видео можно сразу применять в своих проектах.

💬 P.S. Любите Flutter? Подписывайтесь на канал → Flutter Pulse! Еще больше лайфхаков ищите по хэштегу #FlutterPulseYoutube

#Flutter #Dart #FlutterPulse #FlutterPulseTips #FlutterPulseYoutube #yxscope #yx_scope