uz
Feedback
Flutter Pulse

Flutter Pulse

Kanalga Telegram’da o‘tish

На канале будут новости про flutter с сайтов, информация об обновлении пакетов, а также авторский контент.

Ko'proq ko'rsatish
1 022
Obunachilar
Ma'lumot yo'q24 soatlar
+17 kunlar
+430 kunlar
Postlar arxiv
Лучшие обновленные пакеты за последние 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

photo content

📢 Новая фича в Dart: Private Named Parameters (в черновике спецификации, но звучит многообещающе!) 🚀 Dart планирует разрешить использование приватных полей (_field) напрямую в именованных параметрах конструкторов. Раньше это было запрещено — и приходилось использовать лишний код в списке инициализации. Теперь всё станет проще, лаконичнее и более выразительно! 🔒 Проблема: приватные параметры в конструкторах Было нельзя вот так:
class House {
  int? _windows;
  House({this._windows}); //  Ошибка!
}
Почему? Потому что this._windows — приватное поле, а Dart запрещал использовать _ в публичных именованных параметрах. Приходилось писать через инициализацию:
class House {
  int? _windows;

  House({int? windows}) : _windows = windows;
}
✅ Что поменяется? Теперь можно будет использовать приватные поля напрямую:
class House {
  int? _windows;
  int? _bedrooms;
  int? _swimmingPools;

  House({this._windows, this._bedrooms, this._swimmingPools});
}
🔥 А с primary constructors всё ещё лаконичнее:
class House({
  int? _windows,
  int? _bedrooms,
  int? _swimmingPools,
});
🛠 Как это работает? Компилятор убирает _ из параметров конструктора, чтобы они не «светились» вовне, но сохраняет привязку к приватным полям. Это: – соблюдает инкапсуляцию – предотвращает конфликты имён – улучшает читаемость и сокращает код 📚 Подробнее в черновике спецификации и вот тут
📌 Пока в разработке — следим за обновлениями!
🧵 #dart #flutter #новости #privateparameters #язык #фича #инкапсуляция #flutterpulse

**Обзор пакетов на тему "Игры и Награды"** 🎮👏 **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

🔧 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много #конференция

Делегирование дизайна виджета с помощью Фабрик 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

Лучшие обновленные пакеты за последние 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

photo content

🎮 Flutter + Flame = Ты — разработчик игр?! 🔥 Только представь: ты не просто пишешь приложения, а создаешь 2D-игры прямо на Flutter! В этом тебе поможет движок Flame, который превращает твой Flutter-навык в мощный инструмент геймдева. 🎙️ На докладе Станислав Ильин (разработчик с 6-летним стажем) рассказывает: - Что такое Flame и почему он идеален для Flutter-разработчиков. - Как создать первую игру за считанные минуты. - Как использовать компоненты, миксины и эффекты для создания динамичных игровых сцен. - Как интегрировать игру в Flutter-приложение и обратно 🔄. - Про будущее Flame: поддержка 3D, работа с шейдерами и даже мультиплеер! 🎯 Почему стоит попробовать Flame? - ✅ Кроссплатформенность: iOS, Android, Web, Linux, macOS и даже AR! - ✅ Высокая производительность благодаря низкоуровневому рендерингу. - ✅ Hot Reload работает как обычно 💥 - ✅ Возможность смешивать Flutter UI и игровые элементы. - ✅ Сообщество растёт, и уже есть масса пакетов и плагинов! 🚀 А ещё Flame — это отличный способ добавить геймификацию в ваши бизнес-приложения. Представьте: пользователь ждёт доставку пиццы, а тем временем играет в мини-игру внутри приложения 🍕🕹️. Увеличивайте ретеншн, лояльность и даже продажи! 💡 Лайфхак: если вы когда-то мечтали сделать свою игру, но бросили идею из-за сложности Unity или Unreal — Flame может стать вашим шансом начать прямо сейчас, используя знания Flutter! --- 🎥 Видео доступно в записи — обязательно посмотрите, если: - Хотите научиться делать игры без ущерба для карьеры в мобильной разработке. - Интересуетесь перспективами Flutter за рамками обычных приложений. - Хотите быть в авангарде технологий и пробовать новое. --- #FlutterPulse #FlameEngine #GameDevRussia #FlutterGames #ГеймдевНаФлаттере #FlutterCommunity #MobileGameDev #MiniGamesInApps #IndieGameDev #FlutterIsMoreThanApps

Обзор пакетов на тему 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

Использование ИИ в вашем приложении с помощью 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

Лучшие обновленные пакеты за последние 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

photo content

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

Обзор пакетов на тему "Постоянные NoSQL базы данных" Sembast - простое решение для хранения данных в ваших приложениях на Dart и Flutter! 📈 Sembast - это NoSQL база данных, которая хранит все данные в одном файле и загружает их в память при открытии. Поддерживает шифрование и работает на всех платформах, включая MacOS, Android, iOS, Linux и Windows. 👍 Лайки: 1140, 📥 Скачиваний: 163К Последнее обновление 📅: 25 дней назад https://pub.dev/packages/sembast ObjectBox - пакет для управления базами данных в Flutter! 🚀 Позволяет работать с объектами Dart в кроссплатформенных и AI-приложениях. 🔥 Возможности: искусственный интеллект, поиск векторных данных, высокая производительность и минимизация использования ресурсов. 👍 Лайки: 1450, 📥 Скачиваний: 54.9К Последнее обновление 📅: 21 день назад https://pub.dev/packages/objectbox Flutter Secure Storage - безопасное хранение данных в Flutter! 🔒 Позволяет хранить данные в защищённом хранилище на различных платформах. Использует Keychain на iOS, AES-шифрование на Android и libsecret на Linux. 👍 Лайки: 4180, 📥 Скачиваний: 1.75М Последнее обновление 📅: 5 месяцев назад https://pub.dev/packages/flutter_secure_storage LocalStorage - пакет для хранения небольших объемов данных локально на устройстве пользователя! 📁 Не рекомендуется использовать для хранения больших объемов или конфиденциальных данных. 👍 Лайки: 369, 📥 Скачиваний: 18К Последнее обновление 📅: 3 месяца назад https://pub.dev/packages/localstorage Shared Preferences - простое хранение данных в приложениях! 📝 Позволяет хранить простые данные на различных платформах. Поддерживает синхронные и асинхронные методы чтения и записи данных. 👍 Лайки: 10200, 📥 Скачиваний: 3.39М Последнее обновление 📅: 2 месяца назад https://pub.dev/packages/shared_preferences Realm - мобильная база данных, работающая напрямую на устройствах! 📊 Поддерживает последние версии Dart и Flutter и имеет богатый набор функций. 👍 Лайки: 697, 📥 Скачиваний: 47К Последнее обновление 📅: 35 дней назад https://pub.dev/packages/realm #Sembast #ObjectBox #FlutterSecureStorage #LocalStorage #SharedPrefernces #Realm #Flutter #Dart #PubDev #FlutterPulse #FlutterPulseThemedPackages

Заменить код типа на объединенный тип Удаление кода типа из вашего класса с помощью объединенного типа Представьте, что у вас есть класс, который ведёт себя по-разному в зависимости от своего состояния. Вместо того, чтобы использовать перечисления (enum) и конструкции switch для определения поведения, вы можете использовать новую возможность Dart 3 — sealed классы. Это делает код чище, безопаснее и проще в поддержке. Было:

enum DocumentType {
  pdf,
  doc,
  markdown,
}

class Document {
  final String name;
  final DocumentType type;

  Document({
    required this.name,
    required this.type,
  });

  void write(String newLine) {
    switch (type) {
      case DocumentType.pdf:
        // предположим, что у нас есть библиотека для pdf
        break;
      case DocumentType.doc:
        // предположим, что у нас есть библиотека для doc
        break;
      case DocumentType.markdown:
        // предположим, что у нас есть библиотека для markdown
        break;
    }
  }
}
Стало:

sealed class DocumentSealed {
  final String name;

  DocumentSealed({required this.name});
}

class PdfDocument extends DocumentSealed {
  PdfDocument({required super.name});

  void write(String newLine) {
    // используем библиотеку для pdf
  }
}

class DocDocument extends DocumentSealed {
  DocDocument({required super.name});

  void write(String newLine) {
    // используем библиотеку для doc
  }
}

class MarkdownDocument extends DocumentSealed {
  MarkdownDocument({required super.name});

  void write(String newLine) {
    // используем библиотеку для markdown
  }
}
Использование:

class Widget extends StatelessWidget {
  final DocumentSealed document;

  const Widget({super.key, required this.document});

  @override
  Widget build(BuildContext context) {
    return GestureDetector(
      onTap: () {
        switch (document) {
          case PdfDocument _:
            document.write('Hello World');
          case DocDocument _:
            document.write('Hello World');
          case MarkdownDocument _:
            document.write('Hello World');
        }
      },
      child: Text(document.name),
    );
  }
}
Преимущества: • Инкапсуляция кода типа в отдельные классы • Для каждого типа создается свой подкласс • Разная логика для разных типов без использования switch • Код становится более читаемым и тестируемым Оцените новую рубрику! 💡📱 Ваши отзывы нам очень важны! 😊 Все подобные новости можно найти по хэштегу #FlutterPulseTips #flutter #dart #flutterpulse #FlutterPulseTips #MobileDevelopment #Refactoring #CodingTips #SoftwareDevelopment #ProgrammingTips

Лучшие обновленные пакеты за последние 24 часа! syncfusion_flutter_datepicker 29.1.39 Пакет для выбора даты в Flutter-приложении. Обновлена минимальная версия Dart до 3.7. 👍 Лайки: 1580, 📥 Скачиваний: 216К https://pub.dev/packages/syncfusion_flutter_datepicker syncfusion_flutter_calendar 29.1.39 Пакет для создания календарей в Flutter-приложении. Исправлены ошибки и обновлена минимальная версия Dart до 3.7. 👍 Лайки: 1510, 📥 Скачиваний: 85.4К https://pub.dev/packages/syncfusion_flutter_calendar build_runner 2.5.1 Автономный генератор и наблюдатель для Dart. Исправлены ошибки и улучшена работа. 👍 Лайки: 2190, 📥 Скачиваний: 3.98М https://pub.dev/packages/build_runner build 2.5.1 Пакет для создания кастомных реализаций Builder и BuildStep. Обновлена зависимость на build_runner_core. 👍 Лайки: 88, 📥 Скачиваний: 4.14М https://pub.dev/packages/build syncfusion_flutter_charts 29.2.4 Пакет для создания графиков в Flutter-приложении. Исправлена ошибка, связанная с переключением легенды. 👍 Лайки: 3500, 📥 Скачиваний: 250К https://pub.dev/packages/syncfusion_flutter_charts build_resolvers 2.5.1 Пакет для реализации в памяти Resolvers для использования с пакетом build. Обновлена зависимость на build_runner_core. 👍 Лайки: 12, 📥 Скачиваний: 3.87М https://pub.dev/packages/build_resolvers #Flutter #Dart #pubdev #FlutterPulse #FlutterPulseBestPackages #syncfusion_flutter_datepicker #syncfusion_flutter_calendar #build_runner #build #syncfusion_flutter_charts #build_resolvers

photo content

Кроссплатформенный опыт Surf с Flutter Web 🌊💻! Узнайте все о Flutter Web: плюсы и минусы кроссплатформенного фреймворка 🤔, почему Flutter Web не является "настоящим" вебом 🌐 и как это влияет на производительность и SEO 📊. Также мы расскажем, как адаптировать мобильное приложение для веб-платформы 📱💻, решить проблемы с навигацией, модальными окнами и Bottom Sheets 🚪. Наконец, узнайте о возможностях и ограничениях Flutter Web 🌟, как создать адаптивный интерфейс и улучшить UX с помощью специальных виджетов 📈. Читайте нашу статью и откройте для себя новые возможности Flutter и Dart! 📚 Читать здесь 📖 #flutter #dart #flutterpulse 🚀💻

🚨 Новости из мира Dart! 🚨 🤩 Устали от того, что dart:io тормозит ваш код? 🤔 Вы не одиноки! 🙌 Стандартная библиотека Dart для работы с вводом/выводом давно вызывает боль у многих разработчиков. 🤕 Но не волнуйтесь, друзья! 🙅‍♂️ Разработчики Dart работают над новым экспериментальным пакетом io_file, который обещает решить все проблемы! 🎉 Главная цель - предоставить новую реализацию для работы с файловой системой на чистом Dart, с минимальным использованием нативного кода. 📈 API будет простым и предсказуемым, с прозрачной синхронной и асинхронной версией каждой операции. 🕒 Производительность обещают повысить за счет shared memory и пула воркеров! 🚀 Хотите узнать больше? 🤔 Читайте полную новость тут! 📄 Не забудьте подписаться на наш канал flutterpulse, чтобы быть в курсе всех последних новостей и обновлений из мира Dart и Flutter! 📱 #flutter #dart #flutterpulse 🚀💻