Flutter Pulse
417 subscribers
271 photos
542 links
На канале будут новости про flutter с сайтов, информация об обновлении пакетов, а также авторский контент.
Download Telegram
Обновлённые пакеты за последние 24 часа, скачанные наибольшее число раз

dart-webrtc обновился! 🚀
Интерфейс WebRTC, обёрнутый в язык Dart. Используется для создания плагина Flutter Web и адаптации к различным браузерам. В новой версии исправлены ошибки и улучшена производительность.
👍 Лайки: 10, 📥 Скачиваний: 107К
https://pub.dev/packages/dart_webrtc

riverpod_test обновился до версии 0.1.8! 🚀
Этот пакет позволяет тестировать провайдеры Riverpod, увеличивая покрытие кода. В новой версии исправлены ошибки статического анализа.
👍 Лайки: 21, 📥 Скачиваний: 181К
https://pub.dev/packages/riverpod_test

mqtt5_client обновился до версии 4.8.0! 🚀
Пакет используется для создания клиентов MQTT версии 5 в браузере и на сервере. Он поддерживает подписку и публикацию на всех уровнях QOS, аутентификацию, поддержку keep alive и синхронное подключение. В обновлении исправлена ошибка #134.
👍 Лайки: 51, 📥 Скачиваний: 31.6К
https://pub.dev/packages/mqtt5_client

google_api_headers обновился до версии 2.0.0! 🚀
Пакет Google API Headers позволяет получить необходимые заголовки для вызова Google API с ограниченным ключом API в приложениях на Flutter. В новой версии обновлена версия компилятора Android до 33, добавлена совместимость с Android Gradle Plugin 8.0 и обновлено ограничение версии Dart SDK.
👍 Лайки: 28, 📥 Скачиваний: 72.6К
https://pub.dev/packages/google_api_headers

yaml_writer обновился до версии 2.1.0! 🚀
Эта библиотека используется для записи YAML-документов и поддерживает кодирование объектов и конвертеры dart:convert. В новой версии улучшена обработка строк без кавычек, решена проблема с пустыми строками и добавлен новый конструктор YamlWriter.config() и класс YamlWriterConfig.
👍 Лайки: 25, 📥 Скачиваний: 77.6К
https://pub.dev/packages/yaml_writer

#dart #flutter #pubdev #flutterpulse #dart-webrtc #riverpod_test #mqtt5_client #google_api_headers #yaml_writer
Обновлённые пакеты за последние 24 часа, получившие наибольшее число лайков

Riverpod_lint обновился до версии 2.6.5!
Пакет для выявления и исправления общих проблем при работе с Riverpod. Обновление включает в себя обновление зависимостей.
👍 Лайки: 281, 📥 Скачиваний: 307К
https://pub.dev/packages/riverpod_lint

Extended_image обновился до версии 10.0.0!
Мощная библиотека, которая расширяет функциональность компонента Image в Flutter. Добавлена поддержка WebHtmlElementStrategy для ExtendedNetworkImageProvider на Web и миграция на 3.29.0.
👍 Лайки: 1920, 📥 Скачиваний: 259К
https://pub.dev/packages/extended_image

Riverpod_generator обновился до версии 2.6.5!
Пакет для упрощения работы с провайдерами в Riverpod. Обновлена зависимость riverpod_analyzer_utils до 0.5.10.
👍 Лайки: 391, 📥 Скачиваний: 397К
https://pub.dev/packages/riverpod_generator

Flutter_sound обновился до версии 9.4.10!
Набор библиотек для работы с аудио в приложениях Flutter. Исправлены ошибки и добавлены новые функции, такие как поддержка регулирования скорости воспроизведения аудио и управление буфером.
👍 Лайки: 1530, 📥 Скачиваний: 74.8К
https://pub.dev/packages/flutter_sound

Dart_jsonwebtoken обновился до версии 3.1.1!
Простая в использовании реализация JSON Web Token (JWT) для языка Dart. Исправлена совместимость с более старыми версиями Flutter.
👍 Лайки: 309, 📥 Скачиваний: 258К
https://pub.dev/packages/dart_jsonwebtoken

#Riverpod_lint #Extended_image #Riverpod_generator #Flutter_sound #Dart_jsonwebtoken #flutter #dart #pubdev #flutterpulse
Как показать уведомление Toast с Riverpod
Избавляемся от требования BuildContext

При разработке Flutter-приложений часто возникает необходимость отображать уведомления или сообщения Toast. Использование Riverpod для управления состоянием приложения позволяет упростить этот процесс. В этой статье мы рассмотрим, как показать уведомление Toast, используя Riverpod, и избавимся от необходимости передавать BuildContext.

Для начала нам нужно создать провайдер, который будет отвечать за отображение Toast-уведомлений. Мы будем использовать пакет another_flushbar для отображения уведомлений.


import 'package:another_flushbar/flushbar.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';

// Это наш провайдер из riverpod для вызова метода toast из любой функции riverpod
final toastProvider = Provider<ToastBuilder>((ref) => ToastBuilder());

class ToastBuilder {
void success({
required String title,
required String text,
}) {
// Продолжительность показа уведомления
Duration duration = const Duration(seconds: 3);
_showSuccessToast(
context: navigatorKey.currentContext!, // Используем глобальный ключ навигации
title: title,
text: text,
duration: duration,
);
}

void _showSuccessToast({
required BuildContext context,
required String title,
required String text,
required Duration duration,
}) {
// Хак, чтобы предотвратить показ toast во время тестов
if (Platform.environment.containsKey('FLUTTER_TEST')) {
return;
}
if (!context.mounted) {
return; // Проверяем, смонтирован ли контекст
}

// Используем пакет another_flushbar, но есть много других отличных решений
Flushbar(
flushbarPosition: FlushbarPosition.TOP,
title: title,
message: text,
// Здесь можно добавить стили
).show(context);
}
}


Далее, нам нужно создать глобальный ключ навигации, чтобы избавиться от требования BuildContext:

/// Не забудьте создать этот глобальный ключ и добавить его в ваш основной маршрутизатор
final navigatorKey = GlobalKey<NavigatorState>();


Теперь мы можем использовать наш провайдер toastProvider в любом месте приложения, где доступен Riverpod, чтобы показать Toast-уведомление:

import 'package:flutter_riverpod/flutter_riverpod.dart';

@Riverpod(keepAlive: false)
class EditAlbumNotifier extends _$EditAlbumNotifier {
// ...

Future<void> save() async {
// ...
// Например, после сохранения альбома
ref.read(toastProvider).success(
title: "Успех",
text: "Журнал архивирован",
);
}
}


Таким образом, мы можем легко отображать Toast-уведомления в нашем Flutter-приложении, используя Riverpod и пакет another_flushbar, а также избавиться от необходимости передавать BuildContext, используя глобальный ключ навигации.

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

Все подобные новости можно найти по хэштегу #FlutterPulseTips
#flutter #dart #flutterpulse #FlutterPulseTips #MobileDev #Riverpod #ToastNotifications #FlutterTips
Шаблон Riverpod: упрощаем работу с состоянием приложения

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

Проблема: при использовании Riverpod часто приходится писать повторяющийся код, например, ref.read(myProvider).xxx. Это может быть утомительно и привести к ошибкам. 😩

Решение: использование расширений Dart для создания удобных шорткатов. 🔥



extension UserSessionRepositoryProvider on Ref {
UserSessionRepository get userSessionRepository =>
read(userSessionRepositoryProvider);

UserSessionRepository get userSessionRepository$ =>
watch(userSessionRepositoryProvider);
}



Эти расширения позволяют легко получать экземпляр UserSessionRepository, используя ref.userSessionRepository или следить за его изменениями с помощью ref.userSessionRepository$. 🔄

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



Future<UserSession> startSession({
required Session session,
}) async {
final activeSession = await ref.userSessionRepository
.getActiveSession(idOrThrow);
if (activeSession != null) {
throw AlreadyRunningSessionException();
}
return ref.userSessionRepository.start(
idOrThrow,
UserSession.fromSession(session),
);
}



Такой подход делает код чище и читабельнее. 📚

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

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

#flutter #dart #flutterpulse #FlutterPulseTips #Riverpod #StateManagement #FlutterTips #MobileDevelopment #CodingTips