Flutter Pulse
425 subscribers
279 photos
566 links
На канале будут новости про flutter с сайтов, информация об обновлении пакетов, а также авторский контент.
Download Telegram
Flutter + Jules (настройка контейнера для background AI Agent) 🚀💻
Узнайте, как использовать Jules для упрощения вашей работы с Flutter и Dart! 🤩
Новый инструмент разработки от Google - Jules! 🚀 Это бесплатный AI-агент, работающий на платформе Gemini. Он может помочь с поддержкой проектов, автоматизацией задач и даже рефакторингом кода 📈. Tv
Читать здесь📄
Статья немного странная, на мой взгляд, но может я не прав
#flutter #dart #flutterpulse 💻🔥
Лучшие обновленные пакеты за последние 24 часа!

location 5.0.0
Пакет location позволяет получать местоположение на Android и iOS, а также предоставляет обратные вызовы при изменении местоположения. В новой версии исправлены ошибки и улучшена стабильность.
👍 Лайки: 3150, 📥 Скачиваний: 240К
https://pub.dev/packages/location

build_resolvers 2.5.2
Пакет build_resolvers используется для реализации в памяти Resolvers для использования с пакетом build. В новой версии упрощены предупреждения для устаревшего анализатора.
👍 Лайки: 12, 📥 Скачиваний: 4.04М
https://pub.dev/packages/build_resolvers

go_router 15.2.3
Пакет go_router - это декларативный пакет маршрутизации для Flutter, позволяющий использовать Router API для навигации между экранами на основе URL. В новой версии обновлена документация по теме "Type-safe routes".
👍 Лайки: 5330, 📥 Скачиваний: 1.8М
https://pub.dev/packages/go_router

infinite_scroll_pagination 5.1.0
Пакет infinite_scroll_pagination используется для реализации бесконечной прокрутки и пагинации в Flutter-приложениях. В новой версии добавлены новые функции и исправлены ошибки.
👍 Лайки: 3770, 📥 Скачиваний: 421К
https://pub.dev/packages/infinite_scroll_pagination

build 2.5.2
Пакет build определяет основные компоненты процесса сборки и их взаимодействие. В новой версии используется `build_runner_core` 9.1.0.
👍 Лайки: 88, 📥 Скачиваний: 4.32М
https://pub.dev/packages/build

build_runner 2.5.2
Пакет build_runner используется для генерации файлов в проектах на Dart. В новой версии упрощены предупреждения об устаревшем анализаторе.
👍 Лайки: 2190, 📥 Скачиваний: 4.16М
https://pub.dev/packages/build_runner

#location #build_resolvers #go_router #infinite_scroll_pagination #build #build_runner #flutter #dart #pubdev #FlutterPulse #FlutterPulseBestPackages
Использование ИИ в вашем приложении с помощью Gemini

Привет, разработчики Flutter! 🤖💻 Сегодня мы расскажем, как добавить Gemini в ваше приложение с помощью Firebase Functions безопасным способом 🔒.

Почему не стоит использовать плагин flutter_gemini?

Из соображений безопасности я настоятельно предпочитаю не раскрывать свой ключ API Gemini в приложении 🔑.

Шаги по интеграции Gemini с Firebase:

1. Создайте новый проект Firebase с помощью команды firebase init genkit или установите необходимые зависимости 📦.
- Установите следующие пакеты:
- @genkit-ai/ai
- @genkit-ai/core
- @genkit-ai/dotprompt
- @genkit-ai/firebase
- @genkit-ai/flow
- @genkit-ai/googleai
- zod

2. Установите genkit глобально: npm install -g genkit 🌐.

3. Инициализируйте gemini, используя configureGenkit 🔧.



import { initializeApp } from "firebase/app";
import { defineString } from "firebase-functions/params";
import { configureGenkit } from '@genkit-ai/core';
import { firebase } from '@genkit-ai/firebase';

defineString('GOOGLE_GENAI_API_KEY');
const firebaseApp = initializeApp();

configureGenkit({
plugins: [
firebase(),
googleAI({ apiKey: defineString('GOOGLE_GENAI_API_KEY') }),
],
// ...
enableTracingAndMetrics: true,
});



Добавьте ключ API в файл .env и не забудьте удалить .env из .gitignore, иначе Firebase не сможет его использовать 🚫.



export const suggestionFlow = onFlow({
name: "suggestionFlow",
httpsOptions: { cors: true },
region: "europe-west1",
inputSchema: z.object({ uid: z.string(), query: z.string(), language: z.string() }),
outputSchema: z.string(),
authPolicy: (auth, input) => {
// Проверка аутентификации пользователя
if (auth.uid != input.uid) {
throw new Error("You can only access your own data");
}
// Проверка поддерживаемого языка
if (input.language != "fr" && input.language != "en") {
throw new Error("Only French and English are supported for now");
}
// Разрешить доступ только аутентифицированным пользователям
return !!auth.uid;
},
}, async (input) => {
const exercicesContext = JSON.stringify(exercices);
const userLanguage = input.language;
const prompt = `You are an AI assistant that helps users with XXX. You will speak in the user's language: $userLanguage.
You will answer with the JSON format below:
{"days": [{"day": number, "steps": {...}, "description": string}]}
Here is the user query: ${input.query}`;

const llmResponse = await generate({
model: gemini15Flash,
prompt,
config: {
temperature: 1,
maxOutputTokens: 3000,
},
});

return llmResponse.text();
});



Разверните эту функцию на Firebase с помощью команды firebase deploy --only functions 🚀.

Вызов функции из Flutter:


Future<String> fetchStretchingSuggestionFlow(
String uid,
String query,
String userLanguage,
) async {
final callable = FirebaseFunctions.instance.httpsCallable('suggestionFlow');
final result = await callable.call<String>({
'uid': uid,
'query': query,
'language': userLanguage,
});
final data = (await decode(result.data)) as Map<String, dynamic>;
return AIexercice.fromJson(data);
}



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

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

#flutter #dart #flutterpulse #FlutterPulseTips #Firebase #Gemini #AI #FlutterTips #MobileDev #AppDev
Обзор пакетов на тему Grid 📚

Waterfall Flow 🌟
Пакет для создания сеток с водопадным макетом в Flutter.
Версия: 3.1.1
👍 Лайки: 201, 📥 Скачиваний: 17.4К
Последнее обновление 📅: 4 месяца назад
https://pub.dev/packages/waterfall_flow

Animated Reorderable List 📈
Пакет для создания анимированных списков и сеток с функцией перетаскивания элементов.
Версия: 1.3.0
👍 Лайки: 160, 📥 Скачиваний: 12.4К
Последнее обновление 📅: 2 месяца назад
https://pub.dev/packages/animated_reorderable_list

Flutter Layout Grid 📊
Пакет для создания сеток в Flutter с фиксированными, гибкими и контент-ориентированными строками и столбцами.
Версия: 2.0.8
👍 Лайки: 827, 📥 Скачиваний: 150К
Последнее обновление 📅: 2 месяца назад
https://pub.dev/packages/flutter_layout_grid

Multi Split View 📂
Пакет для создания горизонтальных или вертикальных разделенных представлений с настраиваемыми размерами и флексами.
Версия: 3.6.0
👍 Лайки: 318, 📥 Скачиваний: 22.7К
Последнее обновление 📅: 7 месяцев назад
https://pub.dev/packages/multi_split_view

Flutter Reorderable Grid View 📈
Пакет для добавления анимированной функции перетаскивания и изменения размера элементов в ваших GridView.
Версия: 5.5.0
👍 Лайки: 210, 📥 Скачиваний: 20.1К
Последнее обновление 📅: 3 месяца назад
https://pub.dev/packages/flutter_reorderable_grid_view

Boxy 📦
Пакет для Flutter, который помогает преодолеть ограничения встроенных виджетов макета.
Версия: 2.2.1
👍 Лайки: 684, 📥 Скачиваний: 34.8К
Последнее обновление 📅: 6 месяцев назад
https://pub.dev/packages/boxy

#flutter #dart #pubdev #flutterpulse #flutterpulsethemedpackages #waterfallflow #animatedreorderablelist #flutterlayoutgrid #multisplitview #flutterreorderablegridview #boxy
Лучшие обновленные пакеты за последние 24 часа!

pdfrx 1.2.7
Просмотрщик PDF, построенный на основе PDFium. Поддерживает Android, iOS, Windows, macOS, Linux и Web. Улучшена инициализация PDFium с опциональными параметрами аутентификации для WASM.
👍 Лайки: 219, 📥 Скачиваний: 162К
https://pub.dev/packages/pdfrx

Tostore 2.1.0
Распределенный векторный движок базы данных для Dart/Flutter. Добавлена поддержка автоматического заполнения текущего времени, улучшена структура индекса B+Tree и механизмы восстановления данных.
👍 Лайки: 30, 📥 Скачиваний: 132К
https://pub.dev/packages/tostore

very_good_cli 0.26.1
Инструмент командной строки для Dart. Исправлены ошибки и обновлены зависимости. Теперь лицензионная проверка корректно завершается, даже если нет зависимостей.
👍 Лайки: 673, 📥 Скачиваний: 83.2К
https://pub.dev/packages/very_good_cli

Jaspr 0.19.1
Современный веб-фреймворк для создания веб-сайтов на Dart. Добавлены константа Color.currentColor, свойства rx и ry для svg-элемента rect() и опция prefersContrast в MediaQuery.
👍 Лайки: 532, 📥 Скачиваний: 11.8К
https://pub.dev/packages/jaspr

Decimal 0.1.3
Пакет для выполнения вычислений с десятичными числами без потери точности. Добавлены новые методы: Decimal.signum, Decimal.hasFinitePrecision, Decimal.precision и Decimal.scale.
👍 Лайки: 400, 📥 Скачиваний: 577К
https://pub.dev/packages/decimal

Liquid Glass Renderer 0.1.1-dev.9
Пакет для создания эффекта "жидкого стекла" или "матового стекла" в Flutter. Исправлены ошибки в документации.
👍 Лайки: 245, 📥 Скачиваний: 973
https://pub.dev/packages/liquid_glass_renderer

#pdfrx #Tostore #very_good_cli #Jaspr #Decimal #LiquidGlassRenderer #flutter #dart #pubdev #FlutterPulse #FlutterPulseBestPackages
Делегирование дизайна виджета с помощью Фабрик
Delegate widget design with Factories

При создании выбираемого списка элементов, например, вы можете создать фабрику радиокнопок или чекбоксов. Фабрики позволяют определить готовый дизайн или поведение виджетов заранее.

Когда это полезно?
Вы создаете выбираемый список элементов. Вы можете создать фабрику радиокнопок или чекбоксов.

Пример реализации:

1. Определите абстрактный класс фабрики, например, SelectableFactory:


abstract class SelectableFactory {
const SelectableFactory();

@factory
Widget create({
final String title,
final bool selected
});
}



2. Создайте конкретные реализации фабрики, такие как SelectableRadioFactory:


class _SelectableRadioFactory extends SelectableFactory {
@override
Widget create({
final String title,
final bool selected
}) {
// Создайте ваш виджет здесь
return ListTile(...);
}
}



3. Определите статические экземпляры фабрик для дальнейшего использования:


abstract class SelectableFactory {
static const SelectableFactory radio = _SelectableRadioFactory();
static const SelectableFactory checkbox = _SelectableCheckBoxFactory();
...
}



4. Используйте фабрику для построения части вашего виджета:


AnchoredHelper(
title: const Text(
'Нажми чтобы увеличить',
textAlign: TextAlign.center,
style: TextStyle(
color: Colors.white,
fontSize: 32,
),
),
widgetFactory: AnchoredCircleHoleHelper.anchorFactory,
);



Это позволяет создавать готовые функции построения. Разработчики могут создавать свои собственные фабрики, а также использовать предустановленные.

Оцените новую рубрику и напишите своё мнение! 🤔💬

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

#flutter #dart #flutterpulse #FlutterPulseTips #MobileDevelopment #WidgetDesign #Factories #Refactoring #CodingTips #UI/UX
🔧 DevScreen на Flutter: свой путь к инструменту для логирования, тестирования и смены окружений

🗣 Спикер: Павел, Flutter-разработчик с 10+ годами опыта, один из первых пользователей Flutter в РФ, соавтор книги «Основы Flutter», лектор СФУ и активный участник комьюнити.

На конференции он представил разработку своей команды — DevScreen, универсальный внутренний инструмент для мобильной отладки, логирования, диагностики и смены окружений.
🔎 Зачем нужен DevScreen?

В боевой разработке часто не хватает:

🎛 экрана с настройками (окружения, прокси)

🧾 доступа к логам прямо в приложении

🐞 удобного сбора стектрейсов для QA

📉 отладки UI, FPS, границ, состояния виджетов

🧪 триггера запуска debug-инструментов без пересборки

💬 «Качество — это ответственность всей команды», — говорит Павел. А значит, и тестировщики, и дизайнеры, и разработчики должны иметь доступ к полезной внутренней информации прямо в приложении.
🧰 Что уже есть на рынке?

Рассмотрели 2 популярных решения:
1. Ume

умеет логировать запросы
показывает FPS, границы виджетов, device info
не умеет работать с окружениями и прокси
нет нормального логирования ошибок
триггер ручной (нужно писать самому)

💡 Хорош для дизайнеров и UI-отладки, но слабо помогает QA и не масштабируется под все нужды.

2. Talker

готовый экран логов
отличное логирование (включая ошибки, кастомные события, API-запросы)
удобен и в приложении, и в консоли
не умеет менять окружение и прокси
триггер — тоже руками
нет UI-отладки

💬 «Talker — это скорее логер, чем полноценный DevScreen. Мы хотели большего».


Так родилась идея своего DevScreen MVP, который:
🔓 открывается по shake-жесту или скрытой зоне (не мешает пользователю)
🌐 позволяет менять окружения, добавлять прокси
🧾 логирует ошибки, API-запросы, аналитику и кастомные события
🔄 сбрасывает кэш, симулирует логаут, показывает device info
🛠 кастомизируется под проект, легко расширяется
🔐 имеет авторизацию (доступ по роли или логину)
🧪 отделён от боевого UI, не ломает UX обычного пользователя
⚙️ поддерживает показ границ виджетов, FPS, и другую системную инфу

💡 Всё настраивается модульно. Хочешь только прокси? Подключай только его. Нужны только логи? Без проблем.

🤝 Кто пользуется внутри?
Разработчики — смотрят логи, стектрейсы, ошибки
Тестировщики — не пишут баг на глаз, а прикладывают API-ответ и stacktrace
Дизайнеры — проверяют реализацию UI прямо в приложении (границы, цвета, размеры)

🚀 Что дальше?

В планах:
🧩 сделать DevScreen переиспользуемым пакетом
🛡 вынести доступ к нему за фичефлаг
🧪 покрыть всё юнит- и интеграционными тестами
📢 возможно — опубликовать в open-source, если будет спрос

📺 Полное видео доклада (YouTube):
📌 Такой подход реально экономит часы работы QA и разработчиков, а главное — повышает качество продукта уже на уровне debug. Всё прозрачно, логируемо и воспроизводимо.

🧵 #flutter #flutterpulse #debug #talker #devtools #qa #мобилкарф #тестирование #логирование #devscreen #mobiledev #dart #flutterмного #конференция
Обзор пакетов на тему "Игры и Награды" 🎮👏

Flutter Fortune Wheel 🎡
Пакет для визуализации случайных процессов выбора. Он включает в себя колесо фортуны и панель фортуны, которые можно настроить и использовать на мобильных устройствах, настольных компьютерах и веб-сайтах.
👍 Лайки: 352, 📥 Скачиваний: 8.9К
Последнее обновление 📅: 8 месяцев назад
https://pub.dev/packages/flutter_fortune_wheel

Teqani Rewards 🎁
Пакет для создания игровой механики в ваших приложениях. Поддерживает несколько вариантов хранения данных, включая SharedPreferences, SQLite, Hive и Firebase.
👍 Лайки: 5, 📥 Скачиваний: 38
Последнее обновление 📅: 2 месяца назад
https://pub.dev/packages/teqani_rewards

Roulette 🎲
Создайте кастомизируемые рулетки для ваших приложений с помощью этого простого и удобного виджета. Поддерживает различные типы рулеток, анимацию и настройку внешнего вида.
👍 Лайки: 44, 📥 Скачиваний: 502
Последнее обновление 📅: 8 месяцев назад
https://pub.dev/packages/roulette

Flutter Confetti 🎉
Добавьте праздничную атмосферу в ваши Flutter-приложения с помощью пакета Flutter Confetti!
👍 Лайки: 107, 📥 Скачиваний: 10.6К
Последнее обновление 📅: 3 месяца назад
https://pub.dev/packages/flutter_confetti

Confetti 🎊
Празднуем достижения пользователей с помощью пакета Confetti!
👍 Лайки: 1520, 📥 Скачиваний: 246К
Последнее обновление 📅: 8 месяцев назад
https://pub.dev/packages/confetti

Crossword 🤔
Создайте интерактивные кроссворды в вашем приложении с помощью этого пакета. Он предлагает настраиваемый виджет кроссворда, простой интерфейс для пользователей и возможность управления подсказками.
👍 Лайки: 33, 📥 Скачиваний: 260
Последнее обновление 📅: 4 месяца назад
https://pub.dev/packages/crossword

#flutter #dart #pubdev #flutterpulse #flutterpulsethemedpackages #flutterfortunewheel #teqanirewards #roulette #flutterconfetti #confetti #crossword
Лучшие обновленные пакеты за последние 24 часа!

openai_dart 0.5.2
Неофициальный клиент для API OpenAI на языке Dart. Добавлены изменения для поддержки API OpenRouter и Google.
👍 Лайки: 104, 📥 Скачиваний: 12К
https://pub.dev/packages/openai_dart

build 2.5.3
Определяет основные компоненты процесса сборки и их взаимодействие. Используется `build_runner_core` 9.1.1.
👍 Лайки: 89, 📥 Скачиваний: 4.4М
https://pub.dev/packages/build

adaptive_dialog 2.4.2
Показывает диалоговые окна и модальные листы, адаптируясь к платформе. Добавлена возможность сделать MaterialTextInputDialog прокручиваемым.
👍 Лайки: 1050, 📥 Скачиваний: 24.9К
https://pub.dev/packages/adaptive_dialog

build_resolvers 2.5.3
Реализует в памяти Resolvers для использования с пакетом build. Обновлена зависимость до build_runner_core 9.1.1.
👍 Лайки: 12, 📥 Скачиваний: 4.1М
https://pub.dev/packages/build_resolvers

tabbed_view 1.21.0
Создает вкладки в стиле классических десктоп-приложений на Flutter. Теперь поддерживает передачу TabData в tabCloseInterceptor и добавляет dragScope.
👍 Лайки: 114, 📥 Скачиваний: 1.9К
https://pub.dev/packages/tabbed_view

build_runner 2.5.3
Автономный генератор и наблюдатель для Dart. Исправлены ошибки, связанные с крахом и очисткой сборки.
👍 Лайки: 2190, 📥 Скачиваний: 4.2М
https://pub.dev/packages/build_runner

#openai_dart #build #adaptive_dialog #build_resolvers #tabbed_view #build_runner #flutter #dart #pubdev #FlutterPulse #FlutterPulseBestPackages
Проверка статуса продления подписки пользователя

Привет, Flutter-разработчики! 👋 Сегодня мы рассмотрим полезный совет по проверке статуса продления подписки пользователя с помощью RevenueCat. 📈

Зачем проверять статус продления подписки?

Проверка статуса продления подписки позволяет вам:
Показывать промо-офферы перед тем, как потерять пользователя
Управлять доступом к premium-функциям вашего приложения

Пример кода на Dart:


Future<bool> hasRenewal() async {
final customerInfo = await Purchases.getCustomerInfo();
final entitlements = customerInfo.entitlements.active.values.firstOrNull;
return entitlements?.willRenew ?? false;
}


В этом коде мы:
1. Получаем информацию о покупателе с помощью `Purchases.getCustomerInfo()`
2. Извлекаем активные права доступа (`entitlements`)
3. Проверяем, будет ли подписка продлена (`willRenew`)

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

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

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

#flutter #dart #flutterpulse #FlutterPulseTips #MobileDev #SubscriptionManagement #RevenueCat #FlutterTips
Обзор пакетов на тему Диалоговые окна (Dialogs)

Awesome Dialog 📱
Создавайте простые и красивые диалоги в вашем приложении с помощью Awesome Dialog. Этот пакет позволяет настроить диалоговые окна с анимацией, кастомными кнопками и многим другим.
👍 Лайки: 1430, 📥 Скачиваний: 19.6К
Последнее обновление 📅: 13 месяцев назад
https://pub.dev/packages/awesome_dialog

flutter_platform_alert 📱
Пакет позволяет отображать нативные алерты на различных платформах, включая iOS, Android, Windows, macOS и Linux. Поддерживает различные стили алертов и иконки.
👍 Лайки: 129, 📥 Скачиваний: 6.98К
Последнее обновление 📅: 23 дня назад
https://pub.dev/packages/flutter_platform_alert

Material Dialogs 📱
Создавайте анимированные, простые и стильные диалоги в вашем приложении с помощью Material Dialogs!
Этот пакет предоставляет два типа диалогов: Material Dialog и Bottom Sheet Material Dialog. Также поддерживает анимации с помощью библиотеки Lottie.
👍 Лайки: 351, 📥 Скачиваний: 3.89К
Последнее обновление 📅: 10 месяцев назад
https://pub.dev/packages/material_dialogs

Adaptive Dialog 📱
Пакет позволяет отображать диалоговые окна и модальные листы в зависимости от платформы. Поддерживает iOS и Android.
👍 Лайки: 1050, 📥 Скачиваний: 24.9К
Последнее обновление 📅: 28 часов назад
https://pub.dev/packages/adaptive_dialog

Giffy Dialog 📱
Этот пакет позволяет создавать красивые и кастомизируемые диалоговые окна с анимацией.
👍 Лайки: 598, 📥 Скачиваний: 572
Последнее обновление 📅: 7 месяцев назад
https://pub.dev/packages/giffy_dialog

Flutter Smart Dialog 📱
Этот пакет предназначен для создания элегантных диалоговых окон в приложениях на Flutter. Он поддерживает функции, такие как toast, loading, attach dialog и многое другое.
👍 Лайки: 592, 📥 Скачиваний: 2.57К
Последнее обновление 📅: 25 дней назад
https://pub.dev/packages/flutter_smart_dialog

#flutter #dart #pubdev #flutterpulse #flutterpulsethemedpackages #AwesomeDialog #flutter_platform_alert #MaterialDialogs #AdaptiveDialog #GiffyDialog #FlutterSmartDialog
Лучшие обновленные пакеты за последние 24 часа!

talker_logger 4.9.1
Легкий и настраиваемый логгер для ваших приложений. Обновлены зависимости plugin org.jetbrains.kotlin.android до v2 и com.android.application до v8.10.1.
👍 Лайки: 49, 📥 Скачиваний: 272К
https://pub.dev/packages/talker_logger

flutter_soloud 🎉
Низкоуровневый аудио-плагин для Flutter, предназначенный для игр и иммерсивных приложений.
👍 Лайки: 331, 📥 Скачиваний: 8.5К
https://pub.dev/packages/flutter_soloud

form_builder_validators 7.0.0-alpha.1
Набор валидаторов для виджетов FormField, включая TextFormField, DropdownFormField и другие.
👍 Лайки: 343, 📥 Скачиваний: 164К
https://pub.dev/packages/form_builder_validators

Talker 4.9.1 🚀
Продвинутый обработчик ошибок и логгер для приложений на Dart и Flutter. Обновлены зависимости для talker_http_logger.
👍 Лайки: 726, 📥 Скачиваний: 269К
https://pub.dev/packages/talker

shadcn_ui 0.27.3
Набор компонентов пользовательского интерфейса для Flutter, полностью настраиваемых и готовых к использованию. Исправлены ошибки в компоненте ShadCalendar и в документации.
👍 Лайки: 624, 📥 Скачиваний: 13.2К
https://pub.dev/packages/shadcn_ui

talker_flutter 4.9.1 🚀
Продвинутый обработчик ошибок и логгер для приложений на Dart и Flutter. Обновлены зависимости плагинов org.jetbrains.kotlin.android и com.android.application.
👍 Лайки: 558, 📥 Скачиваний: 192К
https://pub.dev/packages/talker_flutter

#talker_logger #flutter_soloud #form_builder_validators #Talker #shadcn_ui #talker_flutter #flutter #dart #pubdev #FlutterPulse #FlutterPulseBestPackages
Обработка ошибок с Future
Catch them all 🎯

Неправильная функция

Future<void> functionInError() async {
throw "I am failing"; // Выбрасываем ошибку
}


Неправильный способ обработки

functionInError()
.catchError((err) => print("error catched")) // Перехватываем ошибку
.then(
(value) => print("success"), // Успешное выполнение
onError: (err) => print("I failed"), // Обработка ошибки
);

// Результат:
// error catched
// success


catchError перехватывает ошибку, но не возвращает её. Поэтому then выведет success вместо "I failed".

Правильный способ обработки

functionInError()
.catchError((err) {
print("error catched"); // Печатаем сообщение об ошибке
throw err; // Пробрасываем ошибку дальше
})
.then(
(value) => print("success"), // Успешное выполнение
onError: (err) => print("I failed"), // Обработка ошибки
);

// Результат:
// error catched
// I failed


Лучше обрабатывать ошибки в колбэке onError. Но если хотите цеплять функции друг за другом, не забудьте пробросить ошибку дальше.

Цепочка нескольких Future и обработка ошибок

void main() {
functionInError()
.then((res) => workingFuture()) // Продолжаем цепочку
.then((res) => print("ended")) // Завершаем цепочку
.onError((err) => print("error catched")); // Обрабатываем ошибку
}

Future<void> functionInError() async {
throw "I am failing"; // Выбрасываем ошибку
}

Future<void> workingFuture() async {
print("working future"); // Печатаем сообщение о работе
}

// Результат:
// error catched


Ошибка передаётся в последний onError.

Или обработка ошибок через try-catch с await

main() async {
try {
await functionInError(); // Ждём завершения функции
} catch (err) {
print("I failed"); // Обрабатываем ошибку
}
}


Оцените новую рубрику! 👍💬

Все подобные новости можно найти по хэштегу #FlutterPulseTips
#flutter #dart #flutterpulse #FlutterPulseTips #Future #ErrorHandling #FlutterTips #MobileDev #CodingTips
Обзор пакетов на тему "Аналитика и потребительские инсайты" (Analytics & Consumer Insights)

Amplitude Flutter SDK 4.3.2
Пакет для аналитики и отслеживания событий в приложениях Flutter.
👍 Лайки: 111, 📥 Скачиваний: 240К
Последнее обновление 📅: 23 дня назад
https://pub.dev/packages/amplitude_flutter

Mixpanel Flutter SDK 2.4.4
Пакет для интеграции Mixpanel в ваши Flutter-приложения. Отслеживайте события и анализируйте поведение пользователей.
👍 Лайки: 133, 📥 Скачиваний: 184К
Последнее обновление 📅: 18 дней назад
https://pub.dev/packages/mixpanel_flutter

AppsFlyer Flutter Plugin 6.16.2
Пакет для интеграции сервиса AppsFlyer в приложения на Flutter. Отслеживайте события и работайте с deeplink.
👍 Лайки: 154, 📥 Скачиваний: 351К
Последнее обновление 📅: 54 дня назад
https://pub.dev/packages/appsflyer_sdk

Facebook App Events 0.20.1
Пакет для отслеживания событий в вашем приложении. Измерьте эффективность рекламы и создайте целевую аудиторию.
👍 Лайки: 303, 📥 Скачиваний: 95.2К
Последнее обновление 📅: 19 дней назад
https://pub.dev/packages/facebook_app_events

Firebase Analytics 11.5.0
Плагин для использования API Firebase Analytics в ваших Flutter-приложениях. Отслеживайте поведение пользователей и принимайте обоснованные решения.
👍 Лайки: 1240, 📥 Скачиваний: 1.64М
Последнее обновление 📅: 11 дней назад
https://pub.dev/packages/firebase_analytics

Datadog Flutter Plugin 2.11.0
Пакет для мониторинга и анализа производительности приложений Flutter в реальном времени.
👍 Лайки: 38, 📥 Скачиваний: 238К
Последнее обновление 📅: 2 месяца назад
https://pub.dev/packages/datadog_flutter_plugin

#amplitude_flutter #mixpanel_flutter #appsflyer_sdk #facebook_app_events #firebase_analytics #datadog_flutter_plugin #flutter #dart #pubdev #flutterpulse #flutterpulsethemedpackages