Flutter Pulse
521 subscribers
337 photos
738 links
На канале будут новости про flutter с сайтов, информация об обновлении пакетов, а также авторский контент.
Download Telegram
Спам кнопок: как предотвратить множественные нажатия?

Вы когда-нибудь сталкивались с ситуацией, когда пользователь нажимает кнопку несколько раз подряд, вызывая нежелательные действия? 🤯

Представьте, что пользователь нажимает кнопку "Лайк" 10 раз за 1 секунду! 👍 Как сделать так, чтобы событие сработало только один раз? 🤔

Решение: использование RxDart с debounceTime ⏱️


import 'dart:async';
import 'package:flutter/material.dart';
import 'package:rxdart/subjects.dart';
import 'package:rxdart/rxdart.dart';

class LikeButtonWidget extends StatefulWidget {
final Function onTap;

const LikeButtonWidget({required this.onTap, Key? key}) : super(key: key);

@override
_LikeButtonWidgetState createState() => _LikeButtonWidgetState();
}

class _LikeButtonWidgetState extends State<LikeButtonWidget> {
final pushSubject = BehaviorSubject<void>();
late StreamSubscription<void> pushSubscription;

@override
void initState() {
super.initState();
pushSubscription = pushSubject.stream
.debounceTime(const Duration(milliseconds: 1000))
.listen((_) {
// отправить запрос на сервер или выполнить другое действие
widget.onTap();
});
}

@override
void dispose() {
super.dispose();
pushSubscription.cancel(); // не забудьте отменить подписку на поток
}

@override
Widget build(BuildContext context) {
return InkWell(
onTap: () {
pushSubject.add(null);
},
child: const Icon(Icons.plus_one),
);
}
}


Этот код создает кнопку "Лайк", которая срабатывает только один раз в секунду, даже если пользователь нажимает ее несколько раз подряд. 🔥

Оцените нашу новую рубрику и оставьте свои отзывы! 😊

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

#flutter #dart #flutterpulse #FlutterPulseTips #MobileDev #RxDart #DebounceTime #ButtonSpam #SpamProtection
👍2🔥1
Обзор пакетов на тему "Формы" для Flutter 📝

Reactive Forms - это модельный подход к обработке форм и валидации, вдохновленный Angular's Reactive Forms. 👍 Лайки: 912, 📥 Скачиваний: 78.3К
Последнее обновление 📅: 36 дней назад
https://pub.dev/packages/reactive_forms

FForm - это высокоуровневый пакет для создания и управления формами в Flutter-приложениях. 🌟 👍 Лайки: 178, 📥 Скачиваний: 240
Последнее обновление 📅: 2 месяца назад
https://pub.dev/packages/fform

Flutter Form Builder позволяет создавать формы для сбора данных, валидировать поля, реагировать на изменения и собирать пользовательский ввод. 👍 Лайки: 2730, 📥 Скачиваний: 205К
Последнее обновление 📅: 32 дня назад
https://pub.dev/packages/flutter_form_builder

Formz - это унифицированное представление и валидация форм для Dart. 💻 👍 Лайки: 879, 📥 Скачиваний: 120К
Последнее обновление 📅: 9 месяцев назад
https://pub.dev/packages/formz

SurveyKit - это библиотека для создания красивых опросов, вдохновленная iOS ResearchKit Surveys. 📊 👍 Лайки: 124, 📥 Скачиваний: 1.7К
Последнее обновление 📅: 5 месяцев назад
https://pub.dev/packages/survey_kit

form_builder_validators - это набор готовых валидаторов для форм, включая проверку email, телефона, даты, времени и многое другое. 👍 Лайки: 352, 📥 Скачиваний: 174К
Последнее обновление 📅: 47 дней назад
https://pub.dev/packages/form_builder_validators

#ReactiveForms #FForm #FlutterFormBuilder #Formz #SurveyKit #form_builder_validators #flutter #dart #pubdev #flutterpulse #flutterpulsethemedpackages
👍1
Самые лучшие обновлённые пакеты за последние 24 часа

syncfusion_flutter_charts 30.1.41 - библиотека визуализации данных для создания красивых и высокопроизводительных графиков в приложениях Flutter. В новой версии исправлена ошибка, вызванная мутациями элементов графика в фазе макета. 👍 Лайки: 3530, 📥 Скачиваний: 280К. https://pub.dev/packages/syncfusion_flutter_charts

dart_style 3.1.2 - автоматический форматтер кода на языке Dart. В новой версии добавлена поддержка синтаксиса dot shorthand, обновлен до последней версии пакета analyzer. 👍 Лайки: 117, 📥 Скачиваний: 6.7М. https://pub.dev/packages/dart_style

analyzer 8.1.0 - используется для статического анализа кода на языке Dart. В новой версии добавлены новые функции и исправлены ошибки. 👍 Лайки: 295, 📥 Скачиваний: 10.9М. https://pub.dev/packages/analyzer

file_picker 10.2.2 - позволяет использовать родной файловый браузер для выбора одного или нескольких файлов. В новой версии исправлена проблема с добавлением расширения .txt при сохранении файлов на Android. 👍 Лайки: 4770, 📥 Скачиваний: 2.1М. https://pub.dev/packages/file_picker

http 1.5.0 - библиотека для работы с HTTP-запросами. В новой версии исправлена ошибка в IOClient, добавлена поддержка отмены запросов. 👍 Лайки: 8280, 📥 Скачиваний: 11.3М. https://pub.dev/packages/http

dio 5.9.0 - мощный инструмент для HTTP-запросов в Dart и Flutter. В новой версии исправлены ошибки и добавлены новые функции. 👍 Лайки: 8039, 📥 Скачиваний: 749К. https://pub.dev/packages/dio

#Flutter #Dart #PubDev #FlutterPulse #FlutterPulseBestPackages #syncfusion_flutter_charts #dart_style #analyzer #file_picker #http #dio
Запускайте тесты на нескольких размерах экрана

Предотвратите переполнение для разных размеров экранов 🤯

Это позволит запустить тест с каждой конфигурацией экрана в screenSizeVariants 📱


final screenSizeVariants = ValueVariant<ScreenSize>(basicPhones);

testWidgets('''клик на кнопку => отображается закрепленный виджет наложения''', (
WidgetTester tester,
) async {
await tester.setScreenSize(screenSizeVariants.currentValue!);

await tester.pumpWidget(const MyAppWithCircleAnchored());
expect(find.byType(AnchoredHelper), findsNothing);
await tester.tap(find.byType(OutlinedButton).first);
await tester.pump(const Duration(seconds: 2));
expect(find.byType(AnchoredHelper), findsOneWidget);
}, variant: screenSizeVariants);



import 'dart:ui';
import 'package:flutter_test/flutter_test.dart';

// это определяет конфигурацию размера конкретного устройства
class ScreenSize {
// имя этой конфигурации
final String name;

// конфигурация размера и плотность пикселей
final double width, height, pixelDensity;

const ScreenSize(this.name, this.width, this.height, this.pixelDensity);

@override
String toString() => name;
}

extension ScreenSizeManager on WidgetTester {
Future<void> setScreenSize(ScreenSize screenSize) async {
return _setScreenSize(
width: screenSize.width,
height: screenSize.height,
pixelDensity: screenSize.pixelDensity,
);
}

Future<void> _setScreenSize({
double width = 540,
double height = 960,
double pixelDensity = 1,
}) async {
final size = Size(width, height);
await binding.setSurfaceSize(size);
binding.window.physicalSizeTestValue = size;
binding.window.devicePixelRatioTestValue = pixelDensity;
}
}


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

Оцените новую рубрику в комментариях! 💬

#flutter #dart #flutterpulse #FlutterPulseTips #MobileDevelopment #TestingTips #ScreenSize #FlutterTips
👍1
Обзор пакетов на тему Глубокие ссылки (Deep Linking) 🚀

uni_links_desktop 📈
Ускорьте разработку своих Flutter-приложений с помощью uni_links_desktop! Этот пакет позволяет легко работать с ссылками на macOS и Windows.
👍 Лайки: 28, 📥 Скачиваний: 213К
Последнее обновление 📅: 4 месяца назад
https://pub.dev/packages/uni_links_desktop

flutter_facebook_app_links 📊
Пакет Flutter Facebook App Links: уловите отложенные ссылки из Facebook ADS! Пакет позволяет получать отложенные ссылки из Facebook ADS после установки приложения.
👍 Лайки: 41, 📥 Скачиваний: 3.1К
Последнее обновление 📅: 7 месяцев назад
https://pub.dev/packages/flutter_facebook_app_links

app_links 📈
Пакет App Links - универсальный обработчик ссылок для Android, iOS, Linux, macOS и Windows! Открывайте ваше приложение из HTTPS-ссылок, а не из браузера, и используйте кастомные схемы.
👍 Лайки: 1120, 📥 Скачиваний: 1.04М
Последнее обновление 📅: 5 месяцев назад
https://pub.dev/packages/app_links

flutter_branch_sdk 📈
Обновление пакета Flutter Branch SDK! Пакет для интеграции Branch SDK в приложения на Flutter. Позволяет создавать глубокие ссылки, отслеживать пользователей и анализировать их поведение.
👍 Лайки: 217, 📥 Скачиваний: 151К
Последнее обновление 📅: 16 дней назад
https://pub.dev/packages/flutter_branch_sdk

referrer 📊
Новый пакет для Flutter: Referrer! Пакет позволяет читать информацию о реферере (URL-адрес страницы, которая открыла ваше приложение через глубокую ссылку).
👍 Лайки: 30, 📥 Скачиваний: 1.4К
Последнее обновление 📅: 9 месяцев назад
https://pub.dev/packages/referrer

appsflyer_sdk 📈
Обновление пакета AppsFlyer Flutter Plugin! Пакет используется для интеграции сервиса AppsFlyer в приложения на Flutter. Пакет позволяет отслеживать события в приложении, работать с глубокими ссылками и многое другое.
👍 Лайки: 156, 📥 Скачиваний: 497К
Последнее обновление 📅: 21 часа назад
https://pub.dev/packages/appsflyer_sdk

#flutter #dart #pubdev #flutterpulse #flutterpulsethemedpackages #uni_links_desktop #flutter_facebook_app_links #app_links #flutter_branch_sdk #referrer #appsflyer_sdk #deeplinking
Улучши свой Flutter-код! 🚀💻
Устали от громоздких конструкций для обработки касаний в ваших Flutter-приложениях? 🤯👀
Теперь есть решение! 🎉 Представляем вам TapRegion - элегантный виджет, который упрощает обработку касаний и делает ваш код чище! 🌟

🔵 Узнайте, что такое TapRegion и как он работает
🔵 Изучите все плюсы и минусы его использования
🔵 Получите готовый пример кода для вашего проекта

Читайте полную статью здесь, а также не забудьте подписаться на flutterpulse, чтобы быть в курсе всех последних новостей и обновлений из мира Flutter! 📚💻 #flutter #dart #flutterpulse 👍💯
Самые лучшие обновлённые пакеты за последние 24 часа

widgetbook 3.16.0
Плагин для Flutter, который позволяет использовать Widgetbook. Теперь минимальная версия SDK - 3.7.0, а минимальная версия Flutter - 3.29.0.
Добавлен новый тип контрола - object.segmented, а также проведена рефакторизация некоторых компонентов.
👍 Лайки: 646, 📥 Скачиваний: 255К
https://pub.dev/packages/widgetbook

dds 5.1.0
Пакет для запуска Dart Developer Service (DDS), который обеспечивает расширенную функциональность для взаимодействия с экземпляром Dart VM Service.
В новой версии обновлен протокол DDS до версии 2.1, а также устарели некоторые RPC и параметры.
👍 Лайки: 17, 📥 Скачиваний: 3.7М
https://pub.dev/packages/dds

intercom_flutter 9.4.4
Пакет является оберткой для Intercom Android, iOS и Web-проектов, позволяя интегрировать функции Intercom в свои приложения.
В новой версии обновлен Intercom iOS SDK до версии 19.1.1.
👍 Лайки: 145, 📥 Скачиваний: 87.5К
https://pub.dev/packages/intercom_flutter

wechat_assets_picker 9.6.0
Пакет используется для выбора изображений, видео и аудио в приложениях Flutter, с интерфейсом, вдохновленным WeChat.
В новой версии добавлена поддержка персидского (фарси) языка, улучшено управление маршрутами и исправлены ошибки.
👍 Лайки: 829, 📥 Скачиваний: 39К
https://pub.dev/packages/wechat_assets_picker

dds_service_extensions 2.1.0
Пакет расширяет интерфейс package:vm_service, добавляя поддержку RPC из протокола Dart Developer Service (DDS).
В новой версии устарели методы DdsExtension.getAvailableCachedCpuSamples и DdsExtension.getCachedCpuSamples.
👍 Лайки: 5, 📥 Скачиваний: 4.2М
https://pub.dev/packages/dds_service_extensions

file_picker 10.2.3
Пакет позволяет использовать родной файловый менеджер для выбора одного или нескольких файлов с поддержкой фильтрации по расширениям.
В новой версии исправлены ошибки сборки на Flutter 3.24, вызванные изменениями для устранения предупреждений о устаревании Win32 в Windows.
👍 Лайки: 4770, 📥 Скачиваний: 2.1М
https://pub.dev/packages/file_picker

#Flutter #Dart #PubDev #FlutterPulse #FlutterPulseBestPackages #widgetbook #dds #intercom_flutter #wechat_assets_picker #dds_service_extensions #file_picker
Исчерпывающее руководство по высокопроизводительному рендерингу Canvas’а — Часть 1 🚀💻
Из этой статьи Вы узнаете:
🔵 Как создавать высокопроизводительные приложения Flutter на основе Canvas с помощью эффективных стратегий рендеринга, пакетной обработки на GPU и продвинутых методов отладки 📊💡.
🔵 Как оптимизировать рендеринг и перерисовку в своих приложениях с помощью CustomPaint, LeafRenderObjectWidget и пакета RePaint 🎨🖌️.
🔵 Как правильно использовать виджеты канваса в Flutter, чтобы избежать ненужных перестроек дерева виджетов и повысить производительность 🚀💻.
🔵 Как использовать обрезку и создать систему камеры для сложных визуализаций и игр" 📸👾.
🔵 Как создать удобную камеру и эффективно организовать сцену с помощью составных отрисовщиков" 📺👍.
🔵 Как оптимизировать производительность канваса Flutter с помощью ускорения графического процессора и умного повторного использования объектов Paint 🎨🖌️.
🔵 Как оптимизировать производительность вашего приложения Flutter, сводя к минимуму ненужные пересчеты и используя эффективные флаги для контроля перерисовки 📈💻.
🔵 Как группировать операции перерисовки, использовать модульность и управлять состоянием для достижения максимальной производительности 🚀💡.
🔵 Как ускорить производительность вашего приложения Flutter с помощью пакетных методов рендеринга: drawAtlas, drawRawAtlas и drawRawPoints 🚀👍.
🔵 Как эффективно реализовывать пользовательские шейдеры и управляйте пространством с помощью QuadTree для достижения значительного повышения производительности 🚀👍.
Это и многое другое в статье на хабре
#Flutter #Dart #FlutterPulse #Canvas #Рендеринг #Производительность #Оптимизация #МобильнаяРазработка #Программирование 🚀💻
👍1
Изучаем OverflowBar: Легкое управление адаптивными строками и столбцами

Привет, разработчики Flutter! 👋 Вы когда-нибудь сталкивались с проблемой, когда содержимое строки или столбца выходит за пределы экрана? 🤔 Сегодня мы рассмотрим OverflowBar - удобный виджет, который помогает легко решить эту проблему! 💡

Что такое OverflowBar?
OverflowBar - это виджет, который располагает своих потомков в строке, если хватает места, или в столбце, если места недостаточно. 📐 Это особенно полезно для создания адаптивных интерфейсов, которые корректно отображаются на разных устройствах и в различных ориентациях экрана.

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



OverflowBar(
children: [
Image.asset('asset/image.jpg'), // Загружаем изображение из assets
const Card(
child: Text('My Title'), // Отображаем текст внутри карточки
),
],
);



Как видно из примера, OverflowBar автоматически определяет доступное пространство и перераспределяет элементы при необходимости. 🔄

Ключевые особенности:
- Автоматическое обнаружение переполнения и перераспределение элементов 🔍
- Возможность использования вместе с виджетом Wrap 🌟
- Гибкость в управлении выравниванием переполненных элементов ⚖️

Документация гласит:
"Виджет, который располагает своих потомков в строке, если они помещаются, или в столбце, если они не помещаются в доступном горизонтальном пространстве."

👉 Оцените новую рубрику #FlutterPulseTips и оставьте свои отзывы! 💬

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

#flutter #dart #flutterpulse #FlutterPulseTips #MobileDevelopment #UIUX #AppDevelopment #CodingTips
Обзор пакетов на тему "Нижняя панель навигации" (Bottom Navigation Bar)

📦 Animated Bottom Navigation Bar - позволяет создавать анимированную нижнюю панель навигации с возможностью кастомизации. Поддерживает от 2 до 5 элементов навигации и работает с FloatingActionButton.
👍 Лайки: 1360, 📥 Скачиваний: 18.7К
📅 Последнее обновление: 5 месяцев назад
https://pub.dev/packages/animated_bottom_navigation_bar

📦 Google Nav Bar - позволяет создать современную навигационную панель в стиле Google.
👍 Лайки: 1600, 📥 Скачиваний: 42.9К
📅 Последнее обновление: 9 месяцев назад
https://pub.dev/packages/google_nav_bar

📦 Water Drop Nav Bar - предлагает анимированную нижнюю панель навигации с эффектом "капли воды".
👍 Лайки: 370, 📥 Скачиваний: 931
📅 Последнее обновление: 13 месяцев назад
https://pub.dev/packages/water_drop_nav_bar

📦 Persistent Bottom Navigation Bar - позволяет создать персистентную нижнюю панель навигации в вашем приложении. Включает 20 стилей, возможность настройки анимации и поддержку платформы iOS.
👍 Лайки: 2310, 📥 Скачиваний: 14К
📅 Последнее обновление: 13 месяцев назад
https://pub.dev/packages/persistent_bottom_nav_bar

📦 BottomNavyBar - позволяет создавать красивые и анимированные нижние навигационные панели для ваших Flutter-приложений.
👍 Лайки: 1340, 📥 Скачиваний: 4.6К
📅 Последнее обновление: 13 месяцев назад
https://pub.dev/packages/bottom_navy_bar

📦 Persistent Bottom Navigation Bar Version 2 - позволяет создавать настраиваемую нижнюю панель навигации для ваших приложений на Flutter. В нем доступно 17 предустановленных стилей, а также возможность создать свой собственный стиль без ограничений функционала.
👍 Лайки: 398, 📥 Скачиваний: 13.4К
📅 Последнее обновление: 47 дней назад
https://pub.dev/packages/persistent_bottom_nav_bar_v2

#flutter #dart #pubdev #flutterpulse #flutterpulsethemedpackages #animatedbottomnavigationbar #googlenavbar #waterdropnavbar #persistentbottomnavigationbar #bottomnavybar #persistentbottomnavigationbarversion2