Flutter Pulse
433 subscribers
285 photos
584 links
На канале будут новости про flutter с сайтов, информация об обновлении пакетов, а также авторский контент.
Download Telegram
Создание изображения из виджета

Привет, 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
Лучшие обновлённые пакеты за последние 24 часа 🚀

google_sign_in_android 7.0.1: Плагин для входа в систему через Google на Android-устройствах. Исправлена проблема входа на некоторых устройствах. 👍 Лайки: 8, 📥 Скачиваний: 842К. Узнать больше: https://pub.dev/packages/google_sign_in_android 📈

safe_device 1.3.1: Пакет для обнаружения взломанных устройств и эмуляторов в приложениях Flutter. Исправлены проблемы со сборкой под iOS, улучшена интеграция с Swift. 👍 Лайки: 327, 📥 Скачиваний: 126К. Подробнее: https://pub.dev/packages/safe_device 📊

synchronized 3.4.0: Пакет для предотвращения одновременного доступа к асинхронному коду в приложениях Dart. Добавлен метод synchronizedSync для синхронных вычислений. 👍 Лайки: 590, 📥 Скачиваний: 1.4М. Подробнее: https://pub.dev/packages/synchronized 🔒

string_validator 1.2.0: Пакет для валидации и санитизации строк в Dart. Исправлена валидация IPv4 и IPv6 с помощью улучшенных шаблонов regex. 👍 Лайки: 449, 📥 Скачиваний: 120К. Подробнее: https://pub.dev/packages/string_validator 📝

analyzer 7.5.2: Пакет для статического анализа кода на языке Dart. Устаревшие свойства LibraryElement.identifier и LibraryElement2.identifier заменены на uri. 👍 Лайки: 287, 📥 Скачиваний: 11.7М. Подробнее: https://pub.dev/packages/analyzer 📊

nb_utils 7.1.5: Пакет с различными утилитами для приложений Flutter. Добавлены новые методы, такие как getAndroidSDKVersion и расширение asBool для строк. 👍 Лайки: 465, 📥 Скачиваний: 11.8К. Узнайте больше: https://pub.dev/packages/nb_utils 📈

#Flutter #Dart #PubDev #FlutterPulse #FlutterPulseBestPackages #google_sign_in_android #safe_device #synchronized #string_validator #analyzer #nb_utils 🚀
🚀 Изоляты в Dart: Глубокое Погружение в Параллельный Мир!

Привет, Flutter-энтузиасты! 👋 Сегодня мы делимся 🔥горячим видео, которое перевернет ваше представление о многозадачности в Dart. Глеб (@Gleb) на Школе Мобильной Разработки 2025 детально разобрал изоляты — мощный инструмент для параллельных вычислений!

🔍 Что внутри?
👉 Основы параллелизма в Dart: Узнаете, почему Dart называют "однопоточным, но с оговорками".
👉 Секреты изолятов: Как они устроены в Dart VM, группы изолятов и их жизненный цикл.
👉 Практика: Создание изолятов, обмен сообщениями через порты, обработка ошибок.
👉 Flutter-специфика: Работа с Platform Channels, FFI и Background Isolates (да-да, даже в Flutter 3.7+!).
👉 Опасные грабли: Распространенные ошибки и оптимизация производительности.

💡 Почему это важно?
Хотите, чтобы UI не лагал при тяжелых вычислениях? Мечтаете распараллелить обработку изображений или JSON? Это видео — ваш ключ к решению! Глеб наглядно показывает, как избежать EventLoop и повысить отзывчивость приложений.

🎯 Смотрите и учитесь:
Изоляты в Dart — ШМР Flutter 2025

💬 "Теперь я понимаю, почему изоляты — не потоки, а акторная модель рулит!" — вот лишь один из отзывов. Не упустите шанс прокачаться!

👉 Подписывайтесь на Flutter Pulse — каждый день новые лайфхаки, туториалы и разборы. Ищите другие видео по хэштегу #FlutterPulseYoutube!

#Flutter #Dart #FlutterPulse #FlutterPulseTips #FlutterPulseYoutube
Создаём изображение из виджета с помощью пакета

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

Шаг 1: Установка пакета screenshot
Для начала необходимо установить пакет screenshot. Для этого добавьте следующую строку в файл pubspec.yaml и выполните команду flutter pub get:

import 'package:screenshot/screenshot.dart';


Шаг 2: Создание изображения из виджета
Теперь вы можете создать изображение из любого виджета, указав его размер и соотношение пикселей. Вот пример кода:


final controller = ScreenshotController();
final imgBytes = await controller.captureFromWidget(
widget, // ваш виджет
targetSize: const Size(320, 520), // размер изображения
pixelRatio: 3, // соотношение пикселей
);



Этот код позволяет вам программно создавать изображения любых виджетов, что может быть полезно для различных задач, например, для создания скриншотов или генерации контента. 📱💻

Оцените нашу новую рубрику и оставьте свои комментарии! 💬 Нам важно ваше мнение. 👍

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

#flutter #dart #flutterpulse #FlutterPulseTips #MobileDevelopment #FlutterTips #CodingTips #AppDevelopment
Самые лучшие обновлённые пакеты за последние 24 часа

safe_device 1.3.2 - пакет для обнаружения взломанных устройств, эмуляторов и mock-локаций в приложениях Flutter. В новой версии произведены значительные изменения в архитектуре, включая переход с Swift на Objective-C для обнаружения взлома на iOS. 👍 Лайки: 327, 📥 Скачиваний: 125К. https://pub.dev/packages/safe_device

fluwx 5.6.0 - плагин для Flutter, позволяющий разработчикам использовать API WeChatSDK. В новой версии добавлена поддержка分享 эмодзи на Android и iOS, а также улучшена документация. 👍 Лайки: 251, 📥 Скачиваний: 6.2К. https://pub.dev/packages/fluwx

flutter_chat_ui 2.6.0 - пакет для создания интерфейса чата в приложениях Flutter. В новой версии добавлены новые функции, такие как scrollToIndex и sendButtonVisibilityMode. 👍 Лайки: 1.5К, 📥 Скачиваний: 77.2К. https://pub.dev/packages/flutter_chat_ui

pro_image_editor 10.0.0 - пакет для редактирования изображений в приложениях Flutter. В новой версии добавлены новые функции, такие как перемещение слоев и дублирование слоев. 👍 Лайки: 400, 📥 Скачиваний: 21К. https://pub.dev/packages/pro_image_editor

posix 6.0.3 - пакет, предоставляющий доступ к API POSIX для MacOS и Linux систем. В обновлении исправлена информация о копирайте. 👍 Лайки: 8, 📥 Скачиваний: 3.1М. https://pub.dev/packages/posix

build_test 3.2.1 - пакет для тестирования утилит для пользователей пакета build. В новой версии добавлена поддержка загрузки файлов с диска. 👍 Лайки: 10, 📥 Скачиваний: 408К. https://pub.dev/packages/build_test

#Flutter #Dart #PubDev #FlutterPulse #FlutterPulseBestPackages #safe_device #fluwx #flutter_chat_ui #pro_image_editor #posix #build_test
🔥 Git: как большие команды пишут код вместе

Привет, коллеги! 👋 Работать в одиночку — одно дело. Но когда над проектом трудится целая команда, всё меняется! 💼 Как синхронизировать код, избежать хаоса и не мешать друг другу? Ответ — в новом полезном видео!

🚀 Что внутри?
👉 Системы контроля версий (спасибо, Git!) — ваш щит от хаоса.
👉 Базовые команды для повседневной работы: коммиты, ветвление, слияние.
👉 Рабочие процессы в больших командах: от пул-реквестов до CI/CD.
👉 Реальные кейсы: как избежать конфликтов и сохранить историю кода чистой.
👉 Фишки для профессионалов: ребейс, теги и секреты эффективного код-ревью.

💡 Почему это must-watch?
Видео — не сухая теория! Автор (технический руководитель платформы Sourcecraft) показывает всё на практике, объясняет сложное простыми словами и делится опытом Яндекса. Вы узнаете:
- Как работать с Git, даже если интернет «умер» 🚇
- Почему ветки должны жить недолго
- Зачем нужны осмысленные коммиты (и как они спасают в будущем!) 🔍

🎬 Смотрите и учитесь:
👉 Git: как большие команды пишут код вместе

💬 «Понимание Git — не про запоминание команд, а про ментальную карту работы системы» — главный посыл ролика.

🔔 Хотите больше полезного?
Подписывайтесь на канал и ищите другие видео по хэштегу #FlutterPulseYoutube! Новые лайфхаки — каждую неделю.

#Flutter #Dart #FlutterPulse #FlutterPulseTips #FlutterPulseYoutube
Рисуем текст на холсте
Холст - это интерфейс для рисования непосредственно на экране 🤩

В этом совете мы рассмотрим, как использовать CustomPaint и TextPainter для рисования текста на холсте во Flutter. Это полезно для создания пользовательских виджетов и сложных визуализаций 🎨


import 'package:flutter/material.dart';
import 'dart:ui' as ui;

// Класс виджета, который рисует текст на холсте
class TextOnCanvas extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('Текст на холсте')),
body: CustomPaint(
painter: TextPainterExample(),
child: Container(),
),
);
}
}

// Класс, который расширяет CustomPainter для рисования текста
class TextPainterExample extends CustomPainter {
@override
void paint(Canvas canvas, Size size) {
// Определяем стиль текста
final textStyle = TextStyle(
color: Colors.black,
fontSize: 40,
);

// Создаем TextSpan с текстом и стилем
final textSpan = TextSpan(
text: 'Привет, холст!',
style: textStyle,
);

// Создаем TextPainter для рисования текста
final textPainter = TextPainter(
text: textSpan,
textDirection: ui.TextDirection.ltr,
);

// Вычисляем размер текста
textPainter.layout();

// Определяем позицию, где будет нарисован текст
final offset = Offset(50, 100);

// Рисуем текст на холсте в указанной позиции
textPainter.paint(canvas, offset);
}

@override
bool shouldRepaint(CustomPainter oldDelegate) {
return false;
}
}


Оцените новую рубрику и напишите в комментариях, какие темы вам наиболее интересны! 💬👍
Все подобные новости можно найти по хэштегу #FlutterPulseTips
#flutter #dart #flutterpulse #FlutterPulseTips #MobileDevelopment #UIUX #CodingTips
Обзор пакетов на тему "Инструменты разработчика" (Developer Tools)

Flutter Flavorizr 🍰
Пакет для создания flavors в ваших Flutter-приложениях.
👍 Лайки: 890, 📥 Скачиваний: 88К
Последнее обновление 📅: 41 день назад
https://pub.dev/packages/flutter_flavorizr

build_runner 🏃‍♂️
Пакет для автогенерации и слежения за файлами в проектах на Dart.
👍 Лайки: 2.2К, 📥 Скачиваний: 4.51М
Последнее обновление 📅: 5 дней назад
https://pub.dev/packages/build_runner

package_config 📦
Утилита для работы с конфигурационными файлами Dart-пакетов.
👍 Лайки: 11, 📥 Скачиваний: 9.14М
Последнее обновление 📅: 3 месяца назад
https://pub.dev/packages/package_config

analyzer 🔍
Пакет для статического анализа кода для инструментов и IDE.
👍 Лайки: 287, 📥 Скачиваний: 11.9М
Последнее обновление 📅: 40 часов назад
https://pub.dev/packages/analyzer

flutter_dotenv 🌟
Загрузите конфигурацию во время выполнения из файла .env и используйте ее во всей вашей Flutter-приложении.
👍 Лайки: 2.05К, 📥 Скачиваний: 655К
Последнее обновление 📅: 8 месяцев назад
https://pub.dev/packages/flutter_dotenv

meta 📈
Утилита для улучшения анализа кода и генерации JavaScript!
👍 Лайки: 456, 📥 Скачиваний: 10.8М
Последнее обновление 📅: 44 дня назад
https://pub.dev/packages/meta

#flutter #dart #pubdev #flutterpulse #flutterpulsethemedpackages #build_runner #package_config #analyzer #flutter_dotenv #meta #flutter_flavorizr