Flutter Pulse
497 subscribers
301 photos
633 links
На канале будут новости про flutter с сайтов, информация об обновлении пакетов, а также авторский контент.
Download Telegram
Flutter советы - Как связать анимации в цепочку

Привет, разработчики Flutter! 👋 Сегодня мы поделимся с вами полезным советом о том, как создавать сложные анимации, связывая их в цепочку с помощью одного контроллера анимации 🔄

Создание сложных анимаций
Вы можете создать сложные анимации, связывая несколько анимаций в одну цепочку с помощью AnimationController. Это позволяет вам управлять несколькими анимациями одновременно и создавать более интересные и динамичные пользовательские интерфейсы 🎨



fadeAnimController = AnimationController(
vsync: this,
duration: Duration(milliseconds: 2000));
backgroundAnimation = CurvedAnimation(
parent: fadeAnimController,
curve: Interval(0, .4, curve: Curves.easeIn));
titleOpacityAnimation = CurvedAnimation(
parent: fadeAnimController,
curve: Interval(.4, .5, curve: Curves.easeIn));
titleSizeAnimation = CurvedAnimation(
parent: fadeAnimController,
curve: Interval(.4, .6, curve: Curves.easeInOutBack));
// ... свяжите другие анимации



В этом примере мы создаем AnimationController с длительностью 2 секунды и три CurvedAnimation, которые привязаны к этому контроллеру. Каждая CurvedAnimation имеет свой собственный интервал и кривую, что позволяет нам создавать сложные анимации 🔩

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

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

#flutter #dart #flutterpulse #FlutterPulseTips #AnimationTips #UIUX #MobileDevelopment #FlutterTips
👍3
Обзор пакетов на тему CSV, Excel, ODS & Sheets 📊

Excel - это библиотека для чтения, создания и обновления таблиц Excel (XLSX) в Flutter и Dart. 👍 Лайки: 1170, 📥 Скачиваний: 162К
Последнее обновление 📅: 10 месяцев назад
https://pub.dev/packages/excel

Spreadsheet Decoder: декодируйте и обновляйте таблицы ODS и XLSX! 👍 Лайки: 116, 📥 Скачиваний: 10.4К
Последняя версия: 2.3.0
Последнее обновление 📅: 9 месяцев назад
https://pub.dev/packages/spreadsheet_decoder

Excel to Json: конвертируйте файлы XLSX в JSON с помощью этого удобного пакета! 👍 Лайки: 19, 📥 Скачиваний: 425
Версия: 1.4.0
Последнее обновление 📅: 12 месяцев назад
https://pub.dev/packages/excel_to_json

Syncfusion Flutter XlsIO: пакет для создания и редактирования Excel-документов в Flutter-приложениях. 👍 Лайки: 381, 📥 Скачиваний: 34.2К
Версия: 30.1.38
Последнее обновление 📅: 4 дня назад
https://pub.dev/packages/syncfusion_flutter_xlsio

Syncfusion Flutter DataGrid Export: экспортируйте Flutter DataGrid в форматы Excel и PDF с несколькими опциями настройки. 👍 Лайки: 80, 📥 Скачиваний: 16.5К
Последняя версия: 30.1.38
Последнее обновление 📅: 4 дня назад
https://pub.dev/packages/syncfusion_flutter_datagrid_export

to_csv: создавайте и скачивайте CSV/Excel файлы с минимумом кода! 👍 Лайки: 73, 📥 Скачиваний: 2.41К
Последняя версия: 5.0.4
Последнее обновление 📅: 5 месяцев назад
https://pub.dev/packages/to_csv

#Excel #SpreadsheetDecoder #ExcelToJson #SyncfusionFlutterXlsIO #SyncfusionFlutterDataGridExport #to_csv #flutter #dart #pubdev #flutterpulse #flutterpulsethemedpackages
Самые лучшие обновлённые пакеты за последние 24 часа

flutter_rust_bridge 2.11.1 - Плагин для создания связи между Flutter/Dart и Rust. Убрана ошибка установки.
👍 Лайки: 543, 📥 Скачиваний: 300К
https://pub.dev/packages/flutter_rust_bridge

iregexp - Плагин для работы с интероперабельными регулярными выражениями в Dart. Исправлены ошибки и улучшена производительность.
👍 Лайки: 2, 📥 Скачиваний: 292К
https://pub.dev/packages/iregexp

flutter_osm_plugin 1.0.0-dev.1 - Плагин для создания карт OpenStreetMap в приложениях Flutter. Обновлена документация.
👍 Лайки: 484, 📥 Скачиваний: 7К
https://pub.dev/packages/flutter_osm_plugin

json_path - Плагин для работы с JSON в Dart. Добавлен базовый дизайн-дрافت.
👍 Лайки: 120, 📥 Скачиваний: 305К
https://pub.dev/packages/json_path

flutter_form_builder 9.2.0 - Плагин для создания форм для сбора данных в Flutter. Добавлены новые функции и исправлены ошибки.
👍 Лайки: 2710, 📥 Скачиваний: 207К
https://pub.dev/packages/flutter_form_builder

feedback 3.2.0 - Плагин для сбора обратной связи в приложениях Flutter. Добавлены переводы и исправлены ошибки.
👍 Лайки: 1560, 📥 Скачиваний: 36К
https://pub.dev/packages/feedback

#Flutter #Dart #PubDev #FlutterPulse #FlutterPulseBestPackages #flutter_rust_bridge #iregexp #flutter_osm_plugin #json_path #flutter_form_builder #feedback
Часть 2. GoForm — как не страдать с формами во Flutter 🤩!
Узнайте, как сделать работу с формами приятной и продуктивной 📝.
Новые примеры использования библиотеки GoForm для создания форм в Flutter: поля ввода пароля, чек-боксы и селекторы файлов 📁.
Читайте статью и узнайте, как создавать формы с выпадающими списками, чекбоксами и другими виджетами 📚.
Узнайте, как собирать формы из отдельных компонентов и работать с уже заполненными формами 📝.
GoForm упрощает формы и валидации данных в Flutter 📊.
Узнайте, как создавать формы с асинхронной валидацией и debounce ⏱️.
Управление ошибками и значениями полей в динамических формах с GoForm 📝.
Узнайте, как создавать динамические формы, реагировать на изменения и работать с масками номера телефона в Flutter 📱.
Примеры и лучшие практики тестирования форм в Flutter 📊.
Узнайте о главных плюсах и будущих планах GoForm и как упростить работу с формами в Flutter 🚀.
Читать статью можно здесь 📄.
#flutter #dart #flutterpulse 🚀💻📈
📢 Большая новость для всех разработчиков на Dart и Flutter! 🚀
В языке Dart появилась новая фича под названием Simpler Parameters, которая упрощает синтаксис при объявлении функций и методов 🤩.
Теперь параметры по умолчанию обязательны, а чтобы сделать параметр опциональным, достаточно указать значение по умолчанию через знак равенства = 📝.
Нет больше необходимости использовать [ ... ] для опциональных позиционных параметров и required для обязательных именованных параметров 🙅‍♂️.
Это значит, что код станет более консистентным и легким для чтения 📖.
Например, вместо foo(int a, [int b = 1, int c = 2]) теперь можно писать foo(int a, int b = 1, int c = 2) 📝.
А вместо foo(int a, {required int b, int c = 2}) - foo(int a, {int b, int c = 2}) 📝.
Также теперь функции могут иметь одновременно позиционные и именованные опциональные параметры без ограничений 🤯.
Чтобы узнать больше о этой фиче и как она изменит ваш подход к программированию, перейдите по ссылке и прочитайте полную новость 📄.
Не забудьте подписаться на канал flutterpulse, чтобы быть в курсе всех последних новостей и обновлений в мире Dart и Flutter 📱!
#flutter #dart #flutterpulse 🚀💻
Тестирование выбрасывания ошибки
Привет, Flutter-разработчики! 🤖💻
Сегодня мы рассмотрим полезный совет по тестированию в Flutter: как проверить, что ваше приложение выбрасывает конкретную ошибку. Это очень важно для обеспечения стабильности и надежности вашего приложения. 📈

Вы когда-нибудь сталкивались с ситуацией, когда ваш код выбрасывает ошибку, и вы не знали, как ее правильно протестировать? 🤔 Теперь у вас есть решение! Мы будем использовать `testWidgets` для проверки того, что виджет выбрасывает ожидаемую ошибку.

Пример кода:


testWidgets('создание виджета с некоторым параметром → throw', (WidgetTester tester) async {
var exceptionRes;
// catch flutter error или это приведет к провалу теста
FlutterError.onError = (details) {
exceptionRes = details.exception;
};
await tester.pumpWidget(myAppWithError);
// вернуть обработчик ошибок Flutter обратно
// Flutter выбросит ошибку, если этого не сделать
FlutterError.onError = (details) => FlutterError.presentError(details);
expect(exceptionRes, isNotNull);
expect(exceptionRes, isInstanceOf<MyCustomException>());
});



В этом примере мы тестируем, что виджет выбрасывает `MyCustomException`, когда ему передаются определенные параметры. Мы используем `FlutterError.onError` для перехвата исключения и его проверки.

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

Все подобные новости можно найти по хэштегу #FlutterPulseTips. 🔍
#flutter #dart #flutterpulse #FlutterPulseTips #MobileDevelopment #FlutterTips #Programming #SoftwareDevelopment #ErrorHandling #Testing
Интеграция Flutter Mobile SDK в ОС Аврора 🚀💻! Тимлид Mobile SDK в 2ГИС и Flutter-разработчик рассказывают о технических деталях адаптации под ОС Аврора 🤔. Узнайте, как они использовали Flutter и Dart для разработки под новую российскую операционную систему 📱. Также вы узнаете, как создать кросс-платформенный SDK для ОС Аврора с помощью Flutter и C++ 📈. Подробности в нашей статье читать здесь 📄. #flutter #dart #flutterpulse 🚀💻
Обзор пакетов на тему "Пагинация и ленивая загрузка" (Pagination & Lazy Loading)

📦 lazy_load_indexed_stack - расширяет IndexedStack, позволяя загружать виджеты только при необходимости и предоставляя улучшенный контроль над перезагрузкой конкретных дочерних виджетов. 👍 Лайки: 93, 📥 Скачиваний: 13.4К
Последнее обновление 📅: 5 месяцев назад
https://pub.dev/packages/lazy_load_indexed_stack

📈 firebase_pagination - пакет для упрощения пагинации данных в Firebase Realtime Database и Firestore. 👍 Лайки: 82, 📥 Скачиваний: 2.46К
Последнее обновление 📅: 6 месяцев назад
https://pub.dev/packages/firebase_pagination

📊 number_paginator - виджет пагинации для Flutter, который позволяет переключаться между номерами страниц. 👍 Лайки: 104, 📥 Скачиваний: 11.6К
Последнее обновление 📅: 3 месяца назад
https://pub.dev/packages/number_paginator

🚀 infinite_scroll_pagination - пакет позволяет реализовать бесконечную прокрутку и подгрузку элементов по мере прокрутки экрана. 👍 Лайки: 3790, 📥 Скачиваний: 430К
Последнее обновление 📅: 19 дней назад
https://pub.dev/packages/infinite_scroll_pagination

📈 very_good_infinite_list - библиотека позволяет легко отображать пагинированные данные в ваших Flutter-приложениях. 👍 Лайки: 289, 📥 Скачиваний: 14.9К
Последнее обновление 📅: 8 месяцев назад
https://pub.dev/packages/very_good_infinite_list

📊 loading_more_list - пакет, позволяющий создавать списки с функцией "загрузить еще" для ListView, GridView, WaterfallFlow и Slivers. 👍 Лайки: 175, 📥 Скачиваний: 4.78К
Последнее обновление 📅: 10 месяцев назад
https://pub.dev/packages/loading_more_list

#lazy_load_indexed_stack #firebase_pagination #number_paginator #infinite_scroll_pagination #very_good_infinite_list #loading_more_list #flutter #dart #pubdev #flutterpulse #flutterpulsethemedpackages
👍1
🚀 Новости из мира Flutter! 🚀
Привет, друзья! 👋 Сегодня мы поговорим о пакете url_launcher 📱, который позволяет открывать ссылки во внешнем браузере или прямо внутри приложения 🌐. Но это не все - с его помощью можно совершать звонки, отправлять письма и даже открывать мессенджеры и другие приложения с поддержкой кастомных URL-схем 📲!
Хотите узнать, как это работает? 🤔 Тогда читайте новость: 📄
И не забудьте подписаться на наш канал flutterpulse, чтобы быть в курсе всех последних новостей и обновлений из мира Flutter! 📣
#flutter #dart #flutterpulse 💻📱🔥
Новые пакеты за неделю

video_view
Плагин для легкого воспроизведения видео в приложениях Flutter. Он поддерживает субтитры и переключение аудиодорожек, а также использует системные или приложенные компоненты для бесшовного воспроизведения.
👍 Лайки: 2, 📥 Скачиваний: 975
https://pub.dev/packages/video_view

stroke_gradient_text
Пакет позволяет создавать текст с градиентным и контурным эффектом.
👍 Лайки: 1, 📥 Скачиваний: 288
https://pub.dev/packages/stroke_gradient_text

flutter_powerauth_mobile_sdk_plugin
Пакет для упрощения подключения к сервису PowerAuth в своих мобильных приложениях.
👍 Лайки: 2, 📥 Скачиваний: 513
https://pub.dev/packages/flutter_powerauth_mobile_sdk_plugin

icon_bundler
Пакет позволяет объединять коллекцию файлов svg, png, jpg в один образ, содержащий все иконки.
👍 Лайки: 11, 📥 Скачиваний: 83
https://pub.dev/packages/icon_bundler

not_static_icons
Пакет содержит более 100 анимированных иконок, которые можно настроить по размеру, цвету, продолжительности анимации и толщине линии.
👍 Лайки: 10, 📥 Скачиваний: 0
https://pub.dev/packages/not_static_icons

background
Пакет для использования красивых изображений или видео в качестве динамических фонов для ваших экранов.
👍 Лайки: 21, 📥 Скачиваний: 96
https://pub.dev/packages/background

#flutter #dart #pubdev #FlutterPulse #FlutterPulseBestNewPackages
👍3
🎯 RuStore — теперь не просто альтернатива, а необходимость
📲 Подписан закон, который обязывает при продаже смартфонов и планшетов в России обеспечивать доступ к установке и обновлению приложений через 🇷🇺 единый магазин RuStore.
💥 Что это значит?
— Устройства, продаваемые в РФ, должны поддерживать RuStore "из коробки"
Никаких блокировок, ограничений или "невидимых барьеров" для российских приложений
Запрещено препятствовать обновлениям, уведомлениям, платежам и работе функций, если они идут через RuStore
— Даже 🍏 устройства, которые традиционно "закрыты", формально обязаны обеспечить такую возможность
🚨 Причём:
📌 В законе отдельно упоминаются производители, ограничивающие доступ к сторонним магазинам.
📌 Закон напрямую запрещает такие ограничения — включая блокировку API, ограничение платежей или недоступность функций для сторонних приложений.

🔥 А значит — не исключено, что в ближайшем будущем можно будет ставить приложения на iOS через RuStore (в теории… но реализация покажет 😉).
📢 Flutter-разработчики, следим за ситуацией внимательно: возможно, скоро откроются новые каналы распространения даже для iOS. А пока — продолжаем пилить 🧱 🧑‍💻.
🔗 Подписывайтесь на FlutterPulse — мы разбираем важные законы, фреймворки, SDK и публикуем апдейты без воды.
💬 Что думаете о нововведении? Откроет ли это путь для Flutter-приложений на iOS вне App Store? Прогнётся ли Apple? Пишите в комментариях!
#RuStore #iOS #Закон #МагазинПриложений #MobileDev #Flutter #flutterdev #flutterpulse #россия #санкции #iosdev #androiddev #appdistribution #russia #technews
🔥5
Самые лучшие обновлённые пакеты за последние 24 часа

flutter_chat_ui 2.6.2
Плагин для Flutter, который позволяет создавать чат-интерфейсы. Теперь доступен новый loadingBuilder для stream-сообщений.
👍 Лайки: 1510, 📥 Скачиваний: 74.1К
https://pub.dev/packages/flutter_chat_ui

intl_utils 2.8.11
Пакет для создания связи между переводами из файлов .arb и приложением Flutter. В обновлении была обновлена зависимость petitparser.
👍 Лайки: 227, 📥 Скачиваний: 255К
https://pub.dev/packages/intl_utils

slang 4.7.3
Пакет для создания типобезопасных решений для интернационализации (i18n) в проектах на Dart. В новой версии исправлены ошибки с добавлением ключевого слова "override" к зарезервированным словам и удалением пустых классов.
👍 Лайки: 656, 📥 Скачиваний: 94.7К
https://pub.dev/packages/slang

analyzer 7.5.5
Пакет для статического анализа кода на языке Dart. В новой версии удалены свойства LocalVariableElement.hasInitializer и LocalVariableFragment.hasInitializer, которые были не полезны и не использовались.
👍 Лайки: 289, 📥 Скачиваний: 11.8М
https://pub.dev/packages/analyzer

amplitude_flutter 3.16.0
Пакет для интеграции с Amplitude. В этом обновлении исправлена проблема с сессиями в Android SDK, добавлен метод setOffline и исправлены вложенные свойства событий в Web.
👍 Лайки: 113, 📥 Скачиваний: 227К
https://pub.dev/packages/amplitude_flutter

flutter_background_geolocation 1.0.0-rc.1
Пакет для отслеживания местоположения в фоновом режиме и геозонирования с умным обнаружением движения для iOS и Android. В обновлении исправлены ошибки, добавлены новые функции, включая реализацию для Android и улучшение обнаружения местоположения.
👍 Лайки: 805, 📥 Скачиваний: 25.4К
https://pub.dev/packages/flutter_background_geolocation

#Flutter #Dart #PubDev #FlutterPulse #FlutterPulseBestPackages #flutter_chat_ui #intl_utils #slang #analyzer #amplitude_flutter #flutter_background_geolocation
Отслеживание жизненного цикла приложения
Привет, подписчики! 👋 Сегодня мы рассмотрим очень полезный совет по Flutter - отслеживание жизненного цикла приложения. 📱💻

Вы знаете, что происходит с вашим приложением, когда оно переходит в фон или возвращается на передний план? 🤔 Чтобы управлять этими изменениями, мы можем использовать специальный метод didChangeAppLifecycleState. 🔍

В примере кода ниже показано, как это работает:


class CameraAwesomeState extends State<CameraAwesome> with WidgetsBindingObserver {
// ...
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
super.didChangeAppLifecycleState(state);
switch (state) {
case AppLifecycleState.resumed:
if (!started) {
CamerawesomePlugin.start(); // Запуск камеры при возобновлении работы приложения
}
break;
case AppLifecycleState.inactive:
case AppLifecycleState.paused:
case AppLifecycleState.detached:
if (started) {
CamerawesomePlugin.stop(); // Остановка камеры при переходе в фон или закрытии приложения
}
break;
}
}
// ...
}



Жизненный цикл приложения включает четыре основных состояния:
- resumed - приложение активно и видимо для пользователя.
- inactive - приложение не активно, но ещё видимо.
- paused - приложение не активно и не видимо (находится в фоне).
- detached - приложение закрыто.

Используя эти знания, вы сможете лучше управлять ресурсами вашего приложения и улучшать пользовательский опыт! 🌟

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

Все подобные новости можно найти по хэштегу #FlutterPulseTips. 🔍
#flutter #dart #flutterpulse #FlutterPulseTips #MobileDev #AppDevelopment #ProgrammingTips #TechNews
👍5
Самые лучшие обновлённые пакеты за последние 24 часа

coverage 1.15.0
Пакет coverage используется для сбора, манипуляции и форматирования данных о покрытии кода для языка Dart.
В новой версии 1.15.0 добавлена функция `filterIgnored`, которая позволяет фильтровать данные о покрытии кода на основе комментариев `// coverage:ignore-...`.
👍 Лайки: 126, 📥 Скачиваний: 8.6М
https://pub.dev/packages/coverage

Retrofit 4.6.0
Пакет Retrofit - это генератор клиента Dio, использующий source_gen и вдохновленный Chopper и Retrofit. Он позволяет легко создавать API-клиенты для приложений на Dart.
В новой версии 4.6.0 обновлена минимальная поддерживаемая версия SDK до Dart 3.6.
👍 Лайки: 1970, 📥 Скачиваний: 492К
https://pub.dev/packages/retrofit

camera 0.11.2
Пакет camera - это плагин для Flutter, позволяющий получить доступ к камерам устройств на iOS, Android и Web. Он позволяет отображать живую предварительную версию камеры, делать снимки и записывать видео.
В новой версии исправлены проблемы с переключателями в примере камеры и экспортом CameraLensType.
👍 Лайки: 2450, 📥 Скачиваний: 471К
https://pub.dev/packages/camera

source_helper 1.3.6
Пакет source_helper предоставляет утилиты для генерации кода Dart. Теперь требует analyzer 7.3.0, source_gen 2.0.0-4.0.0 и sdk 3.6.0.
👍 Лайки: 18, 📥 Скачиваний: 2.4М
https://pub.dev/packages/source_helper

syncfusion_flutter_charts 30.1.38
Пакет syncfusion_flutter_charts - это библиотека визуализации данных для создания красивых, анимированных и высокопроизводительных графиков в приложениях Flutter.
В новой версии исправлена ошибка #GH2377, теперь callback onPointTap возвращает правильный индекс точки для видимых данных.
👍 Лайки: 3510, 📥 Скачиваний: 251К
https://pub.dev/packages/syncfusion_flutter_charts

video_player_avfoundation 2.8.0
Теперь добавлена поддержка платформенных представлений для macOS.
👍 Лайки: 8, 📥 Скачиваний: 2.6М
https://pub.dev/packages/video_player_avfoundation

#flutter #dart #pubdev #FlutterPulse #FlutterPulseBestPackages #coverage #Retrofit #camera #source_helper #syncfusion_flutter_charts #video_player_avfoundation
Предоставление разрешений в интеграционных тестах на Android с помощью командной строки adb

Привет, разработчики Flutter! 👋 Сегодня мы поделимся с вами полезным советом о том, как предоставлять разрешения в интеграционных тестах на Android с помощью командной строки adb. 📱💻

Зачем это нужно?
При выполнении интеграционных тестов на Android ваше приложение может требовать определённые разрешения. Без этих разрешений тесты могут завершиться неудачей. 🤕

Решение
Используйте команду adb для предоставления разрешений вашему приложению перед выполнением тестов. Вот пример кода на Dart, который демонстрирует, как это можно сделать:



const List<String> permissions = [
'android.permission.WRITE_EXTERNAL_STORAGE', // Разрешение на запись во внешнее хранилище
'android.permission.RECORD_AUDIO', // Разрешение на запись аудио
];

const String _examplePackage = 'com.apparence.example'; // Имя пакета вашего приложения

Future<void> main() async {
// Предоставляем разрешения перед запуском тестов
permissions.forEach((permission) => Process.runSync(
'adb', ['shell', 'pm', 'grant', _examplePackage, permission]));

print('Starting test.'); // Начало теста
await integrationDriver(); // Запуск интеграционных тестов
print('Test finished. Revoking permissions...'); // Окончание теста и отзыв разрешений

// Отзываем разрешения после завершения тестов
permissions.forEach((permission) => Process.runSync(
'adb', ['shell', 'pm', 'revoke', _examplePackage, permission]));
}



Этот код сначала предоставляет необходимые разрешения, затем запускает интеграционные тесты, и, наконец, отзывает разрешения после завершения тестов. 🔄

Оцените нашу новую рубрику советов для Flutter-разработчиков! 👍 Ваши отзывы помогут нам сделать её ещё лучше. 💬

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

#flutter #dart #flutterpulse #FlutterPulseTips #MobileDev #AndroidDev #IntegrationTesting #FlutterTips
👍2