Flutter Pulse
613 subscribers
380 photos
834 links
На канале будут новости про flutter с сайтов, информация об обновлении пакетов, а также авторский контент.
Download Telegram
Загрузка байтов изображения и отображение на холсте
Не так сложно сделать с помощью Flutter 😉

Вы когда-нибудь задумывались, как можно загрузить изображение и отобразить его на холсте в Flutter? 🤔 Давайте разберемся в этом вместе! 💡

Шаг 1: Загрузка изображения
Сначала нам нужно загрузить изображение из наших ресурсов. Для этого мы используем метод load класса rootBundle:


import 'dart:ui' as ui;
import 'package:flutter/services.dart';

// Загружаем изображение из ресурсов
final ByteData data = await rootBundle.load(path);
// Преобразуем в Uint8List
final Uint8List bytes = data.buffer.asUint8List();
// Преобразуем в ui.Image
final ui.Image image = await decodeImageFromList(bytes);



Шаг 2: Отображение на холсте
Теперь, когда у нас есть изображение в формате ui.Image, мы можем отобразить его на холсте. Для этого создадим собственный класс CustomPainter:


// Создаем новый CustomPainter
class MyPainter extends CustomPainter {
final ui.Image image;

MyPainter(this.image);

@override
void paint(Canvas canvas, Size size) {
// Рисуем изображение на холсте
canvas.drawImageRect(image, srcRect, dstRect, Paint());
}
}



Вот и все! Теперь вы знаете, как загрузить байты изображения и отобразить их на холсте во Flutter. Просто и эффективно, не правда ли? 😊

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

Все подобные новости можно найти по хэштегу #FlutterPulseTips
#flutter #dart #flutterpulse #FlutterPulseTips #mobiledev #appdev #codingtips #FlutterTips
👍3🔥1
Самые лучшие обновлённые пакеты за последние 24 часа

flutter_webrtc
Пакет для работы с WebRTC в приложениях Flutter, получил обновление. Этот пакет позволяет использовать функции аудио- и видео-связи, обмена данными и другие возможности WebRTC в приложениях для мобильных устройств, настольных компьютеров и веб-приложений.
👍 Лайки: 1270, 📥 Скачиваний: 66.5К
https://pub.dev/packages/flutter_webrtc

flutter_blue_plus
Пакет используется для работы с Bluetooth Low Energy в приложениях Flutter. Он поддерживает почти все функции на платформах iOS, macOS, Android, Linux и Web.
В новой версии исправлена ошибка компиляции на Android.
👍 Лайки: 1180, 📥 Скачиваний: 129К
https://pub.dev/packages/flutter_blue_plus

flutter_local_notifications
Исправлена проблема с отображением не-ASCII символов в названии приложения уведомлений на Windows.
👍 Лайки: 7100, 📥 Скачиваний: 1.4М
https://pub.dev/packages/flutter_local_notifications

flutter_appauth
Пакет используется для аутентификации и авторизации пользователей в приложениях Flutter. Теперь он требует минимум Flutter 3.29 и Dart 3.7.
👍 Лайки: 399, 📥 Скачиваний: 183К
https://pub.dev/packages/flutter_appauth

flutter_local_notifications_windows
Исправлена проблема с отображением не-ASCII символов в названии приложения уведомлений.
👍 Лайки: 2, 📥 Скачиваний: 562К
https://pub.dev/packages/flutter_local_notifications_windows

jaspr
Jaspr - современный фреймворк для создания веб-сайтов на Dart с поддержкой рендеринга на клиентской и серверной стороне.
В новой версии исправлена проблема с рендерингом фрагментов.
👍 Лайки: 544, 📥 Скачиваний: 10.2К
https://pub.dev/packages/jaspr

#flutter #dart #pubdev #FlutterPulse #FlutterPulseBestPackages #flutter_webrtc #flutter_blue_plus #flutter_local_notifications #flutter_appauth #flutter_local_notifications_windows #jaspr
👍1
Локальная база данных
Когда вы хотите, чтобы ваше приложение работало офлайн 🔄

Шаг 1: Использование пакета Drift
Для работы с локальной базой данных мы будем использовать пакет Drift. 📦


dart pub add drift
dart pub add drift_flutter
dart pub add drift_dev



Шаг 2: Создание базы данных


@DriftDatabase(tables: [TaskTable])
class Database extends $Database {
Database([QueryExecutor? e]) : super(e ?? driftDatabase(
name: 'todo-app',
native: const DriftNativeOptions(),
databaseDirectory: getApplicationSupportDirectory,
));

@override
int get schemaVersion => 2; // Версия базы данных

@override
MigrationStrategy get migration {
return MigrationStrategy(
onCreate: (m) async {
await m.createAll();
// Добавьте миграции здесь, если версия новая
},
);
}
}



Шаг 3: Создание таблицы


@DataClassName('TaskEntry')
class TaskTable extends Table {
IntColumn get id => integer().autoIncrement()();
TextColumn get description => text()();

// Добавьте ваши запросы здесь
static Stream<List<TaskEntry>> getAllItems(Database database) =>
database.select(database.taskTable).watch();
}



Шаг 3: Создание или редактирование build.yaml
в корневой папке вашего Flutter-приложения 📁


targets:
$default:
builders:
drift_dev:
# Эти опции изменяют способ генерации кода
options:
databases:
default: lib/modules/drift/database.dart
sql:
dialect: sqlite
options:
version: "3.38"
modules: [fts5]


Запустите сборщик, чтобы регенерировать схему базы данных 🔄

Оцените новую рубрику! 👍💬
Все подобные новости можно найти по хэштегу #FlutterPulseTips
#flutter #dart #flutterpulse #FlutterPulseTips #MobileDevelopment #LocalDatabase #DriftPackage #FlutterTips #AppDevelopment
👍2🔥1
Самые лучшие обновлённые пакеты за последние 24 часа

jovial_svg 1.1.28 - пакет для эффективного рендеринга статических SVG-изображений и анимации. В новой версии добавлен метод `onLoaded` для асинхронного `ScalableImageWidget`, исправлена ошибка с перерисовкой виджета и встроенными изображениями, а также добавлен метод `ScalableImage.imagesAreLoaded` для оптимизации отображения виджета.
👍 Лайки: 233, 📥 Скачиваний: 191К
https://pub.dev/packages/jovial_svg

hux 0.8.4 - современный набор компонентов интерфейса для Flutter, предназначенный для создания чистых и последовательных пользовательских интерфейсов.
В новой версии обновлены README и визуальная иерархия, добавлены новые функции, такие как показ метрик загрузок и интеграция с Figma.
👍 Лайки: 48, 📥 Скачиваний: 943
https://pub.dev/packages/hux

awesome_extensions 2.0.26 - комплект расширений для Map, включая безопасный доступ, фильтрацию, преобразование и операции с вложенными картами.
👍 Лайки: 214, 📥 Скачиваний: 4.2К
https://pub.dev/packages/awesome_extensions

upgrader 12.0.0 - пакет для уведомления пользователей о необходимости обновить приложение, когда в магазине появляется новая версия.
В новой версии удалено использование device_info_plus, переименована основная ветка в main, а минимальная поддерживаемая версия Flutter теперь 3.27.0.
👍 Лайки: 2.4К, 📥 Скачиваний: 186К
https://pub.dev/packages/upgrader

grouped_scroll_view 0.2.3+1 - пакет для отображения группированных списков элементов и поддерживает различные виды представлений, включая ListView и GridView, а также checkbox и radio в scrollView.
В новой версии исправлены предупреждения статического анализа кода, чтобы соответствовать правилам Lints.
👍 Лайки: 56, 📥 Скачиваний: 626
https://pub.dev/packages/grouped_scroll_view

dart_pubspec_licenses 3.0.9 - пакет для сбора и сборки информации о лицензиях открытого исходного кода (OSS) с помощью pubspec.lock.
В новой версии исправлена ошибка с генерацией thisPackage и добавлено поле devDependencies в класс Package в сгенерированном выводе.
👍 Лайки: 1, 📥 Скачиваний: 249К
https://pub.dev/packages/dart_pubspec_licenses

#flutter #dart #pubdev #FlutterPulse #FlutterPulseBestPackages #jovial_svg #hux #awesome_extensions #upgrader #grouped_scroll_view #dart_pubspec_licenses
Сделайте текст выбираемым

По умолчанию текст не является выбираемым. 🤔

Почему? Виджет SelectionArea позволяет выбирать текст, указывая Flutter обрабатывать отрисовку и взаимодействие для выбора текста. 📝


return MaterialApp(
home: SelectionArea(
child: Scaffold(
appBar: AppBar(title: const Text('SelectionArea Sample')),
body: const Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('Row 1'),
Text('Row 2'),
Text('Row 3'),
],
),
),
),
),
);


ИЛИ 🔄


const SelectableText(
'Hello! How are you?',
textAlign: TextAlign.center,
style: TextStyle(fontWeight: FontWeight.bold),
)


Используйте SelectableText вместо Text 🔁

Как выбрать между SelectionArea и SelectableText? 🤔
Используйте selectionArea, если вы хотите включить выбор на нескольких виджетах, а не только на тексте. 📚
Для одного текста просто используйте SelectableText 👍

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

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

#flutter #dart #flutterpulse #FlutterPulseTips #MobileDevelopment #UIUX #CodingTips #AppDevelopment #FlutterTips
5👍1
Новые пакеты за неделю

emulator_guard
Пакет для обнаружения эмуляторов и симуляторов на различных платформах, включая Android, iOS, Linux, macOS и Windows.
👍 Лайки: 7, 📥 Скачиваний: 41
https://pub.dev/packages/emulator_guard

printing_ffi
Плагин для прямого общения с принтерами в Flutter, позволяет перечислять принтеры, отправлять сырые данные для печати и управлять заданиями печати на macOS и Windows.
👍 Лайки: 8, 📥 Скачиваний: 279
https://pub.dev/packages/printing_ffi

dynamic_sdk
Пакет для создания простого и гибкого подключения кошельков к нескольким цепочкам.
👍 Лайки: 1, 📥 Скачиваний: 709
https://pub.dev/packages/dynamic_sdk

flutter_data_sync_manager
Пакет для бесшовной синхронизации данных в режиме offline-first между локальным и удаленным хранилищем.
👍 Лайки: 8, 📥 Скачиваний: 140
https://pub.dev/packages/flutter_data_sync_manager

smart_faker
Мощный и интеллектуальный генератор фейковых данных для приложений Flutter и Dart.
👍 Лайки: 4, 📥 Скачиваний: 362
https://pub.dev/packages/smart_faker

didcomm
Пакет для реализации безопасной и частной связи в вашем приложении, используя протокол DIDComm v2 Messaging.
👍 Лайки: 2, 📥 Скачиваний: 673
https://pub.dev/packages/didcomm

#flutter #dart #pubdev #FlutterPulse #FlutterPulseBestNewPackages #emulator_guard #printing_ffi #dynamic_sdk #flutter_data_sync_manager #smart_faker #didcomm
2
Самые лучшие обновлённые пакеты за последние 24 часа

url_launcher_android 6.3.22
Плагин для запуска ссылок на Android. Теперь добавлена поддержка externalNonBrowserApplication на API 30+.
👍 Лайки: 20, 📥 Скачиваний: 4.8М
https://pub.dev/packages/url_launcher_android

purchases_flutter 9.6.1
Клиент для системы отслеживания подписок и покупок RevenueCat, упрощающий реализацию в-app покупок в Flutter.
В обновлении исправлены ошибки, включая крах при вызове функции покупки с параметрами.
👍 Лайки: 838, 📥 Скачиваний: 173К
https://pub.dev/packages/purchases_flutter

launchdarkly_flutter_client_sdk 4.12.0
Теперь доступна экспериментальная поддержка плагинов и хуков.
Исправлены ошибки и обновлены зависимости.
👍 Лайки: 16, 📥 Скачиваний: 311К
https://pub.dev/packages/launchdarkly_flutter_client_sdk

fl_chart 1.1.1
Теперь с улучшениями в зависимостях vector_math, build_runner, mockito и very_good_analysis.
Пакет fl_chart - это высоко настраиваемая библиотека графиков для Flutter, поддерживающая линейные, баровые, круговые, разбросанные и радарные графики.
👍 Лайки: 6900, 📥 Скачиваний: 1.19М
https://pub.dev/packages/fl_chart

widgetbook 3.17.0
Теперь вы можете настраивать поведение скролла, использовать новую версию Flutter 3.35.0 и многое другое.
Уже 699 лайков и 240000 скачиваний!
👍 Лайки: 699, 📥 Скачиваний: 240К
https://pub.dev/packages/widgetbook

supabase_flutter 2.10.1
Пакет supabase_flutter - это клиентская библиотека для Supabase, позволяющая использовать функции аутентификации, базы данных, хранилища и многое другое в приложениях Flutter.
В новой версии исправлена проблема с совместимостью с веб-приложениями из-за импорта dart:io.
👍 Лайки: 871, 📥 Скачиваний: 227К
https://pub.dev/packages/supabase_flutter

#flutter #dart #pubdev #FlutterPulse #FlutterPulseBestPackages #url_launcher_android #purchases_flutter #launchdarkly_flutter_client_sdk #fl_chart #widgetbook #supabase_flutter
👍1
🚀 Расширяем возможности Flutter с помощью FFI: бинарники и компиляция под капотом!

🔥 Готовы погрузиться в мир нативной магии? В новом видео от эксперта Руслана Цицера — ключевые секреты интеграции C/C++ библиотек во Flutter через FFI! Узнайте, как избежать подводных камней и заставить "железо" работать на вас.

👉 СМОТРЕТЬ ВИДЕО 👈

💡 В этом выпуске:
🔧 Две главные проблемы FFI и их элегантные решения:
1️⃣ Выбор компилятора — почему для iOS, Android и macOS нужны разные инструменты и как их настроить
2️⃣ Интеграция бинарников — куда поместить скомпилированные библиотеки, чтобы Flutter их "увидел"

📦 Практические примеры:
- Работа с Makefile и скриптами сборки
- Особенности подключения под Android (jniLibs) и iOS (Framework + Info.plist)
- Автоматизация переноса бинарников

🚨 Внимание, лайфхак! Для iOS показан работающий метод подключения через "кустарные" CocoaPods — минимум конфигурации, максимум результата!

🔗 Ресурсы:
- GitHub с примерами кода

💬 "Если вы работаете с нативным кодом — это видео сэкономит вам часы поисков!"

👍 Не пропустите! Узнайте, как:
- Собрать универсальные бинарники под любую платформу
- Избежать ошибок ABI-совместимости
- Оптимизировать процесс сборки

👉 Подписывайтесь на канал, жмите 🔔 колокольчик, чтобы не пропустить новые выпуски! Ваши лайки и комментарии — лучшая мотивация для автора 💙

И про реакции на нашем канале тоже не забывайте!) 👍

#Flutter #Dart #FlutterPulse #FlutterPulseTips #FlutterPulseYoutube #FFI #Rust #NativeCode #MobileDevelopment
1
Вложенная навигация с Go_Router
Давайте создадим боковую панель с Flutter Web и go_router 🤔

Вместо того, чтобы напрямую добавлять все маршруты (GoRoute), мы обернём их в поднавигацию 📦

Мы обернём все подмаршруты в StatefulShellRoute, чтобы управлять состоянием поднавигации 🔄

Для каждого подмаршрута у нас будет StatefulShellBranch, который может содержать несколько маршрутов 🌐

Каждый элемент будет иметь свой собственный стек навигации 📚



import 'package:go_router/go_router.dart'; // Импорт библиотеки go_router

GoRouter generateRouter() {
return GoRouter(
routes: [
// Страница без боковой панели
GoRoute(
name: 'signin',
path: '/signin',
builder: (context, state) => const SignInPage(),
),
// Страница с боковой панелью
StatefulShellRoute(
parentNavigatorKey: navigatorKey, // Ключ навигатора родительского маршрута
// Боковая панель будет отображаться слева
builder: (context, state, navigationShell) => Row(
children: [
SideBar(state: state), // Боковая панель
Expanded(child: navigationShell), // Содержимое навигации
],
),
// builder будет вызван, когда маршрут активируется
// navigationShell - виджет, который отображает содержимое маршрута
// Он будет показывать текущую последнюю страницу стека навигации для каждой ветки
navigatorContainerBuilder: (
BuildContext context,
StatefulNavigationShell navigationShell,
List<Widget> children,
) {
if (children.isEmpty) {
return SizedBox(); // Пустой контейнер, если нет дочерних элементов
}
return Scaffold(
body: children[navigationShell.currentIndex], // Отображение текущего дочернего элемента
);
},
branches: [
StatefulShellBranch(
routes: [
GoRoute(
name: 'users',
path: '/users',
builder: (context, state) => const UsersPage(),
),
GoRoute(
name: 'user profile',
path: '/users/:userId',
builder: (context, state) => const UserProfilePage(),
),
],
),
StatefulShellBranch(
routes: [
GoRoute(
name: 'notifications',
path: '/notifications',
builder: (context, state) => const NotificationsPage(),
),
],
),
],
),
],
);
}



Оцените новую рубрику 👍👏! Все подобные новости можно найти по хэштегу #FlutterPulseTips. Не забудьте подписаться и следить за новыми советами 🔔

#flutter #dart #flutterpulse #FlutterPulseTips #MobileDevelopment #FlutterTips #GoRouter #NestedNavigation #FlutterWeb
👍3👨‍💻1
Привет, программисты! 🤩 У вас когда-нибудь возникала задача связать два виджета в разных частях дерева, чтобы один точно позиционировался относительно другого? 🤔 Это может быть полезно при создании dropdown'ов, подсказок и overlay-элементов 📝. В новой статье Сёрфы делятся гайдом, как связать видженты с помощью LayerLink 📈. Объясняют, как работают target и follower, и почему без них не обойтись при создании этих элементов 🏄. Если вы хотите быть в курсе всех последних новостей и гайдов по Flutter и Dart, то стоит подписаться на flutterpulse 📊! #flutter #dart #flutterpulse 😊
Самые лучшие обновлённые пакеты за последние 24 часа

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

JOSE 0.3.5
Теперь поддерживает архив ^4.0.0 и сжатые данные в JWE.
Лайков: 69, Скачиваний: 375000
https://pub.dev/packages/jose

agora_rtc_engine 6.5.3
Этот пакет используется для добавления функций видео и аудио коммуникаций в приложения, построенные на Flutter.
В новой версии исправлены ошибки компиляции, устранено мерцание видео при изменении разрешения и улучшена совместимость с нижними версиями Flutter SDK.
Пакет имеет 859 лайков и 37300 скачиваний.
https://pub.dev/packages/agora_rtc_engine

envied 1.3.0
Этот пакет позволяет упростить работу с переменными окружения в приложениях Dart/Flutter. Теперь вы можете легко хранить и использовать переменные окружения в своем проекте.
В новой версии расширены ограничения версий для зависимостей build и source_gen.
Пакет envied имеет 851 лайк и более 139 000 скачиваний!
https://pub.dev/packages/envied

talker_logger 5.0.1
Теперь с исправленными документами и обновленной версией share_plus.
Лайков: 49, Скачиваний: 278000.
https://pub.dev/packages/talker_logger

flutter_blue_plus 1.36.7
Этот пакет - плагин Bluetooth Low Energy для Flutter, поддерживающий роль центрального устройства на платформах iOS, macOS, Android, Linux и Web.
В новой версии исправлены ошибки на iOS, macOS, Android и Linux, связанные с настройками и логированием.
Пакет имеет 1180 лайков и более 126 000 скачиваний.
https://pub.dev/packages/flutter_blue_plus

image_picker_android 0.8.4+11
Этот пакет используется для реализации функции выбора изображений на Android-устройствах.
Теперь он работает как федеративная реализация, отдельно от image_picker.
Лайков: 29, Скачиваний: 454000.
https://pub.dev/packages/image_picker_android

#flutter #dart #pubdev #FlutterPulse #FlutterPulseBestPackages #firebase_messaging #jose #agora_rtc_engine #envied #talker_logger #flutter_blue_plus #image_picker_android
Показываем версию вашего приложения
Полезно для поддержки клиентов или просто при тестировании новых сборок из магазинов

Отображение версии приложения может быть очень полезным, особенно когда вы тестируете новые сборки или оказываете поддержку клиентам. Для этого нам понадобится пакет package_info_plus. Установите его, добавив в ваш pubspec.yaml:


dependencies:
package_info_plus: ^latest_version



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


class AppVersion extends StatelessWidget {
const AppVersion({super.key});

Future<PackageInfo> _getAppVersion() async {
// Получаем информацию о пакете приложения
final packageInfo = await PackageInfo.fromPlatform();
return packageInfo;
}

@override
Widget build(BuildContext context) {
return FutureBuilder<PackageInfo>(
future: _getAppVersion(),
builder: (context, snapshot) {
// Проверяем состояние загрузки данных
if (snapshot.connectionState == ConnectionState.waiting || snapshot.hasError) {
return const SizedBox.shrink(); // Возвращаем пустой виджет, если данные ещё не загружены или произошла ошибка
} else {
// Отображаем версию приложения и номер сборки
return Text(
"Version ${snapshot.data?.version}(${snapshot.data?.buildNumber})",
textAlign: TextAlign.center,
style: context.textTheme.bodyMedium?.copyWith(
color: context.colors.onBackground.withOpacity(.6),
),
);
}
},
);
}
}



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

Все подобные новости можно найти по хэштегу #FlutterPulseTips
#flutter #dart #flutterpulse #FlutterPulseTips #MobileDevelopment #AppDevelopment #CodingTips #DevTips
👍1
Самые лучшие обновлённые пакеты за последние 24 часа

pool 1.5.2
Плагин для управления ограниченным пулом ресурсов, что упрощает работу с большим количеством запросов.
Убрана устаревшая версия Dart, увеличена до 3.4, а также пакет был перенесен в репозиторий dart-lang/tools.
👍 Лайки: 113, 📥 Скачиваний: 5.6М
https://pub.dev/packages/pool

webview_flutter_wkwebview 3.23.1
Плагин для реализации Apple WKWebView в webview_flutter.
В обновлении удалён код для версий iOS старше 13.0 и обновлена минимальная поддерживаемая версия SDK до Flutter 3.35.
👍 Лайки: 43, 📥 Скачиваний: 2.9М
https://pub.dev/packages/webview_flutter_wkwebview

image_cropper 10.0.0+1
Плагин для обрезки изображений.
Теперь README документ для Android исправлен, удалена заметка о работе вокруг ограничений, поскольку uCrop полностью поддерживает функцию edge-to-edge.
👍 Лайки: 2390, 📥 Скачиваний: 388К
https://pub.dev/packages/image_cropper

flutter_login 6.0.0
Плагин для входа и регистрации с множеством анимационных эффектов.
В новой версии произошли следующие изменения:
- Заменен intl_phone_number_input на form_builder_phone_field, что упрощает код и делает плагин совместимым с WASM.
- Обновлены зависимости и исправлены устаревшие члены.
👍 Лайки: 1460, 📥 Скачиваний: 4.7К
https://pub.dev/packages/flutter_login

google_sign_in 7.2.0
Плагин для авторизации с помощью учетной записи Google на платформах Android, iOS, macOS и Web.
В новой версии добавлен метод clearAuthorizationToken для удаления токена доступа из кэша, а также обновлена минимальная поддерживаемая версия SDK до Flutter 3.29/Dart 3.7.
👍 Лайки: 3460, 📥 Скачиваний: 860К
https://pub.dev/packages/google_sign_in

local_auth_darwin 1.6.1
Плагин для реализации аутентификации на устройствах iOS и macOS.
В новой версии удален код для старых версий iOS и обновлена минимальная версия поддерживаемого SDK до Flutter 3.35.
👍 Лайки: 5, 📥 Скачиваний: 984К
https://pub.dev/packages/local_auth_darwin

#Flutter #Dart #PubDev #FlutterPulse #FlutterPulseBestPackages #pool #webview_flutter_wkwebview #image_cropper #flutter_login #google_sign_in #local_auth_darwin
И ещё немного про то, что const в dart надо ставить где попало 🤔
В мире разработки на Dart и Flutter часто возникают интересные проблемы, которые требуют нестандартных решений 🤓. Одна из таких проблем связана с использованием dart-define и String.fromEnvironment 🌐. Если вы сталкиваетесь с ситуацией, когда String.fromEnvironment не видит переменные, определенные с помощью dart-define, то это сообщение для вас 📣!

Причина этой проблемы кроется в том, как Dart обрабатывает константы и переменные среды 🌟. Когда вы используете dart-define, чтобы определить переменные среды, они не всегда доступны в рантайме 🕰. Это связано с тем, что String.fromEnvironment требует, чтобы переменные были определены как константы 📝.

Решение этой проблемы простое, но не всегда очевидное 🔮: использовать const при определении переменных 📣! Да, вы правильно прочитали - const не только для констант, но и для того, чтобы сделать ваши переменные среды видимыми в рантайме 🔍.

Итак, если вы столкнулись с проблемой, когда String.fromEnvironment не видит ваши переменные, попробуйте добавить const при их определении 📝. Это должно решить проблему и сделать ваши переменные доступными в рантайме 🌟.

Flutter и Dart - это мощные инструменты для разработки, но иногда требуют творческого подхода к решению проблем 🤔. Итак, помните: const - это не только для констант, но и для того, чтобы сделать ваш код более эффективным и работающим как ожидается 📈.

Подробнее здесь:
#flutter #dart #flutterpulse 🚀💻📱
👍1
Ускорьте Firebase Firestore на iOS

Firestore долго компилируется каждый раз, когда вы запускаете приложение с нуля...

...Хорошая новость в том, что есть решение, предоставленное invertase 🙌

Откройте файл podfile для iOS
Добавьте pod 'FirebaseFirestore'... следующим образом:


target 'Runner' do
use_frameworks!
use_modular_headers!
# ДОБАВЬТЕ ЭТО
pod 'FirebaseFirestore', :git => 'https://github.com/invertase/firestore-ios-sdk-frameworks.git', :tag => '11.2.0'


Вам нужно добавить соответствующую версию, используемую в вашем Flutter-зависимости.

Оцените новую рубрику лайком 👍! Все подобные новости можно найти по хэштегу #FlutterPulseTips
#flutter #dart #flutterpulse #FlutterPulseTips #Firebase #iOS #Firestore #MobileDevelopment #FlutterTips
👍1
Как создать собственный RenderObject 🤔
В этой статье мы поговорим о создании собственных RenderObject в Flutter и о том, как расширять возможности стандартных виджетов 📈. Узнайте, как создавать RenderObject с примерами и разберитесь, как они появляются на свет и какие задачи решают 🌟.

Для программистов: RenderObject в Flutter - это основа для создания сложных интерфейсов 📊. Узнайте о видах RenderObjectWidget, зонах ответственности RenderObject и особенностях встроенных RenderObject 📝.

Хотите узнать, как реализовать уникальные правила взаимодействия виджетов, логику обработки касаний и высокопроизводительные анимации? 🤔 Тогда читайте нашу статью о создании собственного RenderObject в Flutter и создании кастомного виджета MasonryGrid 📚.

В статье мы также рассмотрим создание галереи с помощью MasonryGridRenderObject в Flutter и то, как создать красивую и настраиваемую галерею в своем приложении 📸.

Читать здесь: https://habr.com/ru/articles/947394/
#flutter #dart #flutterpulse 🚀