Flutter Pulse
522 subscribers
335 photos
733 links
На канале будут новости про flutter с сайтов, информация об обновлении пакетов, а также авторский контент.
Download Telegram
Запускайте тесты с несколькими вариантами

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

Вы когда-нибудь сталкивались с ситуацией, когда нужно протестировать один и тот же сценарий с разными входными данными? Вместо того, чтобы писать множество повторяющихся тестов, вы можете использовать возможности ValueVariant из Flutter! 🔥



final timesVariant = ValueVariant<double>({1, 10, 100, 1000}); // Создаём вариант со списком значений

testWidgets('push counter N times', (
WidgetTester tester,
) async {
await tester.pumpWidget(const myApp()); // Инициализируем виджет
for (int i = 0; i < timesVariant.currentValue!; i++) { // Получаем текущее значение варианта
await tester.tap(find.byType(OutlinedButton).first); // Симулируем нажатие кнопки
}
expect(find.text("pushed ${timesVariant.currentValue!} times"), findsOneWidget); // Проверяем текст
}, variant: timesVariant); // Устанавливаем вариант для теста




В этом примере мы:
1. Создаём ValueVariant с нужными нам значениями.
2. Используем timesVariant.currentValue внутри теста, чтобы получить текущее значение.
3. Указываем variant: timesVariant, чтобы тест выполнился для каждого значения.

Таким образом, вы экономите время и пишете более чистый код! 💪

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

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

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

sqlite3_flutter_libs 0.5.39 - пакет для использования native sqlite3 библиотеки в Flutter-приложениях на Android, iOS, macOS, Linux и Windows. Теперь включает sqlite3 версии 3.50.4.
👍 Лайки: 162, 📥 Скачиваний: 289К
https://pub.dev/packages/sqlite3_flutter_libs

sass 1.90.0 - реализация языка стилей Sass на Dart. Добавлена возможность загрузки модуля с конфигурацией.
👍 Лайки: 19, 📥 Скачиваний: 149К
https://pub.dev/packages/sass

amplitude_flutter 3.16.0 - пакет для аналитики и отслеживания событий в приложениях Flutter. Исправлена гонка сессий в Android SDK и добавлен новый метод setOffline.
👍 Лайки: 115, 📥 Скачиваний: 201К
https://pub.dev/packages/amplitude_flutter

flutter_multi_formatter 2.13.8 - пакет для форматирования телефонных номеров, кредитных карт, денег и других данных в приложениях Flutter. Исправлена маска телефонного номера для Австралии.
👍 Лайки: 592, 📥 Скачиваний: 140К
https://pub.dev/packages/flutter_multi_formatter

Patrol 3.19.0 - пакет для автоматизации тестирования мобильных приложений. Исправлены проблемы с логированием и добавлена поддержка языков de, fr и pl.
👍 Лайки: 627, 📥 Скачиваний: 143К
https://pub.dev/packages/patrol

flutter_callkit_incoming 2.5.8 - пакет для показа входящих звонков в приложениях Flutter. Исправлена проблема с уведомлениями о текущих звонках на Android и добавлено уведомление о пропущенных звонках на iOS.
👍 Лайки: 456, 📥 Скачиваний: 37.3К
https://pub.dev/packages/flutter_callkit_incoming

#Flutter #Dart #PubDev #FlutterPulse #FlutterPulseBestPackages #sqlite3_flutter_libs #sass #amplitude_flutter #flutter_multi_formatter #Patrol #flutter_callkit_incoming
Форматирование JSON с помощью Dart

Привет, разработчики! 👋 Сегодня мы рассмотрим полезный совет по работе с JSON в Dart. Вы узнаете, как красиво напечатать JSON-строку, сделав её более читаемой и удобной для отладки 🛠️

Проблема: JSON-данные часто приходят в компактном, неформатированном виде, что затрудняет их чтение и анализ.

Решение: Используйте класс JsonEncoder из пакета dart:convert для форматирования JSON.


import 'dart:convert';

// Создаём кодировщик с отступами для форматирования
var encoder = const JsonEncoder.withIndent(' ');
// Преобразуем данные в красиво отформатированную строку
String prettyprint = encoder.convert(data);


Этот простой код позволяет превратить нечитаемую JSON-строку в структурированный и понятный формат с отступами 🌟

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

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

#flutter #dart #flutterpulse #FlutterPulseTips #JSON #DartTips #FlutterTips #CodingTips #AppDevelopment #MobileDevelopment
👍31
Обзор пакетов на тему Графики и Визуализация

Graphic - библиотека для Flutter, предоставляющая грамматику визуализации данных и позволяющая создавать интерактивные графики и диаграммы. 👍 Лайки: 832, 📥 Скачиваний: 44.1К
Последнее обновление 📅: 55 дней назад
https://pub.dev/packages/graphic

Syncfusion Flutter Charts - мощная библиотека для создания красивых, анимированных и высокопроизводительных графиков. 👍 Лайки: 3530, 📥 Скачиваний: 270К
Последнее обновление 📅: 8 дней назад
https://pub.dev/packages/syncfusion_flutter_charts

FL Chart - пакет для Flutter, предназначенный для создания различных типов графиков, включая линейные, столбчатые, круговые и другие. 👍 Лайки: 6840, 📥 Скачиваний: 985К
Последнее обновление 📅: 2 месяца назад
https://pub.dev/packages/fl_chart

Syncfusion Flutter Gauges - пакет для Flutter, позволяющий создавать современные, интерактивные и анимированные шкалы для ваших приложений. 👍 Лайки: 1110, 📥 Скачиваний: 166К
Последнее обновление 📅: 8 дней назад
https://pub.dev/packages/syncfusion_flutter_gauges

d_chart - пакет для Flutter, позволяющий легко создавать и использовать графики в ваших приложениях. 👍 Лайки: 205, 📥 Скачиваний: 23.7К
Последнее обновление 📅: 3 месяца назад
https://pub.dev/packages/d_chart

Flutter Flow Chart - пакет для Flutter, позволяющий создавать диаграммы потока данных с помощью различных элементов. 👍 Лайки: 186, 📥 Скачиваний: 836
Последнее обновление 📅: 4 месяца назад
https://pub.dev/packages/flutter_flow_chart

#Graphic #SyncfusionFlutterCharts #FLChart #SyncfusionFlutterGauges #d_chart #FlutterFlowChart #flutter #dart #pubdev #flutterpulse #flutterpulsethemedpackages
1
Самые лучшие обновлённые пакеты за последние 24 часа

Firebase Messaging Plugin for Flutter 15.2.1
Плагин для Flutter, который позволяет использовать Firebase Cloud Messaging API. Убрано устаревшее сообщение (#16995).
👍 Лайки: 3690, 📥 Скачиваний: 1.1M
https://pub.dev/packages/firebase_messaging

webview_flutter_android 4.9.0
Теперь пакет поддерживает PlatformWebViewController.loadFileWithParams и добавляет AndroidLoadFileParams для загрузки файлов с заголовками на Android.
Пакет имеет 45 лайков и более 2 640 000 скачиваний!
https://pub.dev/packages/webview_flutter_android

webview_flutter_wkwebview 3.23.0
Теперь добавлена поддержка PlatformWebViewController.loadFileWithParams и введен WebKitLoadFileParams для iOS и macOS.
Лайков: 42, Скачиваний: 2 640 000.
https://pub.dev/packages/webview_flutter_wkwebview

built_value 8.11.1
Пакет built_value используется для создания неизменяемых типов значений, классов-ENUM и сериализации JSON в Dart.
В новой версии разрешено использование analyzer 8.0.0 с built_value_generator.
Пакет имеет 759 лайков и более 7 900 000 скачиваний!
https://pub.dev/packages/built_value

flutter_osm_plugin 1.0.0-dev.1
Этот пакет используется для создания карт OpenStreetMap в приложениях Flutter, с функциями zoals отображение текущего положения, создание маркеров, отслеживание местоположения пользователя и многое другое.
В новой версии обновлена документация.
Пакет имеет 485 лайков и 6980 скачиваний.
https://pub.dev/packages/flutter_osm_plugin

workmanager 0.9.0+2
Теперь вы можете выполнять код Dart в фоновом режиме, даже когда ваше приложение закрыто.
Используется для синхронизации данных, загрузки файлов, очистки задач и многое другое.
Лайков: 2280, скачиваний: 86500.
https://pub.dev/packages/workmanager

#Flutter #Dart #PubDev #FlutterPulse #FlutterPulseBestPackages #webview_flutter_android #webview_flutter_wkwebview #built_value #flutter_osm_plugin #workmanager #FirebaseMessagingPlugin
Базовый Dart (Часть №1) 🚀💻
Привет, программисты! 👋 Сегодня мы поговорим о базовом Dart и о том, что нужно знать до перехода к объектно-ориентированному программированию 🤔.
Узнаем, что такое runtime и compile-time, и как они отличаются 🕒. Также разберемся с типами данных и их важностью в программировании 📊.
Учимся работать с переменными: присваивание, арифметические операции, конкатенация и логические операции 📝. А также изучаем условные операторы if, else if и else, чтобы принимать решения в программах 🤖.
Узнайте о условных операторах, циклах и функциях в программировании 🔄. Эти инструменты помогут вам создавать гибкие и эффективные программы 🚀.
Функции в программировании - это блоки кода, которые выполняют определенные задачи и могут быть вызваны несколько раз 📈. Они помогают повторно использовать код, организовывать программы и облегчают отладку 🐜.
И, конечно, не забудем про Null Safety - мощный инструмент для безопасного кода 🛡. Узнайте, как избегать ошибок и писать более надежный код с помощью Null Safety 📚.
Читайте статью и начинайте свое путешествие в мир программирования 🌟!
#flutter #dart #flutterpulse #programmirovanie #nullsafety #basics #programming #development #coders #learndart #dartlang #flutterdev #mobileappdevelopment 🚀💻
Спам кнопок: как предотвратить множественные нажатия?

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

Представьте, что пользователь нажимает кнопку "Лайк" 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