Детали для улучшения формы
Ничто не раздражает так сильно, как невозможность закрыть клавиатуру. Пользователь нажимает в любом месте... и клавиатура остаётся. Вместо этого вы можете просто сделать так:
Решение: Оберните всю страницу в GestureDetector, а затем снимите фокус со всех элементов, используя функцию FocusScope. Это позволит автоматически убрать клавиатуру при нажатии вне текстовых полей.
Оцените новую рубрику и напишите своё мнение! 👍💬
Все подобные новости можно найти по хэштегу #FlutterPulseTips
#flutter #dart #flutterpulse #FlutterPulseTips #MobileDev #UIUX #AppDev #CodingTips #DevTips #FlutterTips
Ничто не раздражает так сильно, как невозможность закрыть клавиатуру. Пользователь нажимает в любом месте... и клавиатура остаётся. Вместо этого вы можете просто сделать так:
final _formKey = GlobalKey<FormState>();
class SigninPage extends StatelessWidget {
const SigninPage({super.key, this.canDismiss = true});
@override
Widget build(BuildContext context) {
final translations = Translations.of(context).signin;
return GestureDetector(
onTap: () => FocusScope.of(context).unfocus(), // Убираем фокус с полей при нажатии вне их
child: PopScope(
canPop: canDismiss,
child: TopImgBackground(
bgImagePath: 'assets/images/signin/signin_background.png',
child: Scaffold(
backgroundColor: Colors.transparent,
appBar: AppBar(
backgroundColor: Colors.transparent,
automaticallyImplyLeading: canDismiss,
foregroundColor: context.colors.background,
),
resizeToAvoidBottomInset: false,
body: Form(
autovalidateMode: AutovalidateMode.disabled,
key: _formKey,
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 24.0),
child: ListView(
children: [
const SizedBox(height: 150),
Text(
translations.title,
style: Theme.of(context).textTheme.titleLarge?.copyWith(
fontWeight: FontWeight.bold,
),
),
],
),
),
),
),
),
),
);
}
}
Решение: Оберните всю страницу в GestureDetector, а затем снимите фокус со всех элементов, используя функцию FocusScope. Это позволит автоматически убрать клавиатуру при нажатии вне текстовых полей.
Оцените новую рубрику и напишите своё мнение! 👍💬
Все подобные новости можно найти по хэштегу #FlutterPulseTips
#flutter #dart #flutterpulse #FlutterPulseTips #MobileDev #UIUX #AppDev #CodingTips #DevTips #FlutterTips
👍4
Supabase: Привязка анонимного пользователя к аутентифицированному
Анонимный пользователь - это действительно здорово. Вы автоматически создаете нового пользователя в своей базе данных каждый раз, когда кто-то впервые запускает ваше приложение.
Затем вы можете позволить ему подписаться, начать работать с вашим приложением, не беспокоя его просьбой ввести email...
А затем, когда он действительно вовлечется в процесс, вы можете привязать его учетную запись.
Оцените новую рубрику и напишите свое мнение! 👍💬
Все подобные новости можно найти по хэштегу #FlutterPulseTips
#flutter #dart #flutterpulse #FlutterPulseTips #Supabase #MobileDev #AppDev #CodingTips #DevTips
Анонимный пользователь - это действительно здорово. Вы автоматически создаете нового пользователя в своей базе данных каждый раз, когда кто-то впервые запускает ваше приложение.
Затем вы можете позволить ему подписаться, начать работать с вашим приложением, не беспокоя его просьбой ввести email...
А затем, когда он действительно вовлечется в процесс, вы можете привязать его учетную запись.
@override
Future<Credentials> signup(String email, String password) async {
if (client.auth.currentUser?.isAnonymous == true) {
// Обновляем анонимного пользователя с помощью email и password
final res = await client.auth.updateUser(UserAttributes(email: email, password: password));
if (res.user != null) {
return Credentials(id: res.user!.id);
} else {
throw 'Ошибка при обновлении пользователя';
}
}
return client.auth
.signUp(email: email, password: password)
.then(
(value) => Credentials(id: value.user!.id),
onError: (error) {
Logger().e("Ошибка при регистрации: $error");
throw SignupException();
},
);
}
Оцените новую рубрику и напишите свое мнение! 👍💬
Все подобные новости можно найти по хэштегу #FlutterPulseTips
#flutter #dart #flutterpulse #FlutterPulseTips #Supabase #MobileDev #AppDev #CodingTips #DevTips
👍1🔥1
Проверка разрешений
iOS и Android требуют, чтобы вы запрашивали разрешение перед выполнением определенных действий, таких как съемка фотографии, сохранение в галерею пользователя или запись звука.
1. Установка и импорт плагина permission_handler
2. Как использовать
3. Пример использования
Создайте виджет (
Оцените новую рубрику! 👍💬 Нам важно ваше мнение! 🤔
Все подобные новости можно найти по хэштегу #FlutterPulseTips
#flutter #dart #flutterpulse #FlutterPulseTips #MobileDev #AppDev #ProgrammingTips #DevTips
iOS и Android требуют, чтобы вы запрашивали разрешение перед выполнением определенных действий, таких как съемка фотографии, сохранение в галерею пользователя или запись звука.
1. Установка и импорт плагина permission_handler
import 'package:permission_handler/permission_handler.dart';
2. Как использовать
// Запрос одного разрешения
[Permission.camera].request()
// Запрос нескольких разрешений (цепочка запросов)
[Permission.camera, Permission.microphone].request()
// Просто проверка статуса разрешения
final cameraPermission = await Permission.camera.status;
final microphonePermission = await Permission.microphone.status;
3. Пример использования
@override
Widget build(BuildContext context) {
return CameraPermission(
child: CameraAwesomeBuilder.custom(
builder: (state, preview) {
...
},
),
);
}
Создайте виджет (
CameraPermission) здесь. Перед запуском камеры мы проверяем, дал ли пользователь все необходимые разрешения. В противном случае мы показываем виджет, который вежливо просит разрешить доступ + кнопку для открытия настроек.Оцените новую рубрику! 👍💬 Нам важно ваше мнение! 🤔
Все подобные новости можно найти по хэштегу #FlutterPulseTips
#flutter #dart #flutterpulse #FlutterPulseTips #MobileDev #AppDev #ProgrammingTips #DevTips
👍8
Ждём готовности представления
Не редко возникает необходимость выполнить код после того, как представление будет готово. Например, показать всплывающее окно после отображения всех элементов или запустить камеру после инициализации представления.
Чтобы добиться желаемого результата, следуйте простым шагам:
1. Создайте StatefulWidget.
2. В методе
Преимущества использования addPostFrameCallback:
- Гарантия, что код выполнится после полной готовности представления.
- Избежание случайных задержек, которые могут не сработать в нужный момент.
Не злоупотребляйте этим методом! В большинстве случаев можно найти альтернативные решения, которые позволят выполнить код позже без использования
Оцените новую рубрику и оставьте свои комментарии! 👍💬
Все подобные советы ищите по хэштегу #FlutterPulseTips
#flutter #dart #flutterpulse #FlutterPulseTips #MobileDevTips #AppDev #FlutterTips #DartLang
Не редко возникает необходимость выполнить код после того, как представление будет готово. Например, показать всплывающее окно после отображения всех элементов или запустить камеру после инициализации представления.
Чтобы добиться желаемого результата, следуйте простым шагам:
1. Создайте StatefulWidget.
2. В методе
initState вызовите WidgetsBinding.instance.addPostFrameCallback.
@override
void initState() {
super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) {
// ваш код здесь
});
}
Преимущества использования addPostFrameCallback:
- Гарантия, что код выполнится после полной готовности представления.
- Избежание случайных задержек, которые могут не сработать в нужный момент.
Не злоупотребляйте этим методом! В большинстве случаев можно найти альтернативные решения, которые позволят выполнить код позже без использования
addPostFrameCallback.Оцените новую рубрику и оставьте свои комментарии! 👍💬
Все подобные советы ищите по хэштегу #FlutterPulseTips
#flutter #dart #flutterpulse #FlutterPulseTips #MobileDevTips #AppDev #FlutterTips #DartLang
👍5
Создание приложений Flutter, работающих офлайн: секреты успешной реализации
Представьте себе приложение, которое работает без сбоев даже без интернета! 🌟 Это реально, если заранее спланировать архитектуру вашего Flutter-приложения.
В этой статье вы узнаете, как реализовать оффлайн-режим в вашем приложении, используя паттерн Repository, локальное хранилище и стратегии синхронизации. Вы научитесь создавать приложения, которые не теряют данные и сохраняют пользовательский опыт даже без подключения к сети. 📱💻
Статья рассказывает о трёх основных компонентах оффлайн-режима: локальном хранилище, стратегии синхронизации и чистой архитектуре. Вы узнаете, как использовать SQLite, Hive и SharedPreferences для хранения данных, и как реализовать Repository pattern для разделения локальных и удалённых источников данных. Кроме того, вы узнаете о лучших практиках реализации оффлайн-режима, таких как чтение из кэша первым, использование флага "pending" для несинхронизированных операций и группировка обновлений при синхронизации.
🇷🇺Читать статью на русском
🇬🇧Read the article in English
🌐Read the original article
Все подобные новости ищите по хэштегу #FlutterPulseMedium ✨ Оцените новую рубрику!
#flutter #dart #flutterpulse #FlutterPulseMedium #offline #mobildev #appdev #softwaredevelopment
Представьте себе приложение, которое работает без сбоев даже без интернета! 🌟 Это реально, если заранее спланировать архитектуру вашего Flutter-приложения.
В этой статье вы узнаете, как реализовать оффлайн-режим в вашем приложении, используя паттерн Repository, локальное хранилище и стратегии синхронизации. Вы научитесь создавать приложения, которые не теряют данные и сохраняют пользовательский опыт даже без подключения к сети. 📱💻
Статья рассказывает о трёх основных компонентах оффлайн-режима: локальном хранилище, стратегии синхронизации и чистой архитектуре. Вы узнаете, как использовать SQLite, Hive и SharedPreferences для хранения данных, и как реализовать Repository pattern для разделения локальных и удалённых источников данных. Кроме того, вы узнаете о лучших практиках реализации оффлайн-режима, таких как чтение из кэша первым, использование флага "pending" для несинхронизированных операций и группировка обновлений при синхронизации.
🇷🇺Читать статью на русском
🇬🇧Read the article in English
🌐Read the original article
Все подобные новости ищите по хэштегу #FlutterPulseMedium ✨ Оцените новую рубрику!
#flutter #dart #flutterpulse #FlutterPulseMedium #offline #mobildev #appdev #softwaredevelopment
👍4
🎉 Вышел Ноябрьский Flutter-дайджест! 🚀
Привет, друзья!
Ноябрь получился насыщенным — новый Flutter 3.38 уже тут, а вместе с ним куча улучшений по вебу, UI, платформам и продуктивности. Но главное — у нас вышла огромная подборка материалов, переводов, пакетов и гайдов 🔥
И да… наш канал перестал быть анонимным, а в ноябре у меня был день рождения и я немного рассказал о себе 🎂🎉
Спасибо, что вы здесь — продолжаем расти вместе 💙
---
✍️ Новые переводы с Medium
🔹 Жизненный цикл Flutter-приложений. Часть 1 и часть 2
🔹 Перехватчик повторных попыток в Dio
🔹 Как работает Hot Reload / Restart
🔹 Звуки и стили уведомлений
🔹 Доступность клавиатуры
🔹 Жизненный цикл + фоновые задачи
🔹 Как работает GC в Dart
📰 Статьи с Хабра
✅ Интернет-радио. Продолжение
✅ Аудиогид с ИИ без опыта мобильной разработки
✅ Два года с Duit
✅ Flutter везде (и даже в чайнике)
✅ RTSP во Flutter
---
📦 Новые пакеты
• pubghost — поиск «призраков» в проекте
• json_annotation_tools — дебаг JSON
• ms_single_multi_select — меню с множественным выбором
• smart_appbar — умный AppBar
• isar_community — быстрая NoSQL-база
• genui — генеративный UI на ИИ
• gesture_recorder — запись и воспроизведение жестов
---
🔄 Лучшие обновления пакетов месяца
• firebase_messaging 15.2.1
• GetX 4.7.3
• flutter_svg 2.2.3
• auto_route 10.2.3
---
📚 Тематические подборки пакетов
• Country Picker
• Parsing & Text Utils
• Lists
• Deep Linking
• Payment API
• Design System
• Markdown
• Feature Discovery / Coach Marks
---
🎥 Видео-разборы
• Aurora UI Kit
• Flutter Flight Plans 2025
• Многомодульность
• Графический слой микрокernel-ОС
• MCP-сервера + Dart
• Линтеры на Dart
• Плагинная архитектура в Dart
---
💡 Гайды и лайфхаки
• Лайфхаки с колонками
• VSCode настройки
• Render Objects
• Масштабирование изображений
• Разрешения
• Null-aware элементы
• Ready-state у представления
А также новости из других каналов:
аннотации, viewport, модификаторы переменных — всё по ссылкам в нашем посте.
---
💙 И главное
Дальше — ещё больше!
Канал растёт.
И спасибо каждому, кто читает FlutterPulse 🙌
Поддержите нас!
#flutter #dart #flutterpulse #pubdev #новости #дайджест #MobileDev #AppDev 🚀
Привет, друзья!
Ноябрь получился насыщенным — новый Flutter 3.38 уже тут, а вместе с ним куча улучшений по вебу, UI, платформам и продуктивности. Но главное — у нас вышла огромная подборка материалов, переводов, пакетов и гайдов 🔥
И да… наш канал перестал быть анонимным, а в ноябре у меня был день рождения и я немного рассказал о себе 🎂🎉
Спасибо, что вы здесь — продолжаем расти вместе 💙
---
✍️ Новые переводы с Medium
🔹 Жизненный цикл Flutter-приложений. Часть 1 и часть 2
🔹 Перехватчик повторных попыток в Dio
🔹 Как работает Hot Reload / Restart
🔹 Звуки и стили уведомлений
🔹 Доступность клавиатуры
🔹 Жизненный цикл + фоновые задачи
🔹 Как работает GC в Dart
📰 Статьи с Хабра
✅ Интернет-радио. Продолжение
✅ Аудиогид с ИИ без опыта мобильной разработки
✅ Два года с Duit
✅ Flutter везде (и даже в чайнике)
✅ RTSP во Flutter
---
📦 Новые пакеты
• pubghost — поиск «призраков» в проекте
• json_annotation_tools — дебаг JSON
• ms_single_multi_select — меню с множественным выбором
• smart_appbar — умный AppBar
• isar_community — быстрая NoSQL-база
• genui — генеративный UI на ИИ
• gesture_recorder — запись и воспроизведение жестов
---
🔄 Лучшие обновления пакетов месяца
• firebase_messaging 15.2.1
• GetX 4.7.3
• flutter_svg 2.2.3
• auto_route 10.2.3
---
📚 Тематические подборки пакетов
• Country Picker
• Parsing & Text Utils
• Lists
• Deep Linking
• Payment API
• Design System
• Markdown
• Feature Discovery / Coach Marks
---
🎥 Видео-разборы
• Aurora UI Kit
• Flutter Flight Plans 2025
• Многомодульность
• Графический слой микрокernel-ОС
• MCP-сервера + Dart
• Линтеры на Dart
• Плагинная архитектура в Dart
---
💡 Гайды и лайфхаки
• Лайфхаки с колонками
• VSCode настройки
• Render Objects
• Масштабирование изображений
• Разрешения
• Null-aware элементы
• Ready-state у представления
А также новости из других каналов:
аннотации, viewport, модификаторы переменных — всё по ссылкам в нашем посте.
---
💙 И главное
Дальше — ещё больше!
Канал растёт.
И спасибо каждому, кто читает FlutterPulse 🙌
Поддержите нас!
#flutter #dart #flutterpulse #pubdev #новости #дайджест #MobileDev #AppDev 🚀
🔥2💘2👍1👌1
Создаём красивые контекстные меню в Flutter с пакетом star_menu!
Хотите добавить в своё Flutter-приложение стильные и функциональные контекстные меню? В статье ниже вы найдёте подробное руководство по использованию пакета star_menu!
В этой статье вы узнаете, как создавать контекстные меню различных форм (линейные, круговые, сеточные) и настраивать их анимацию. Вы научитесь обрабатывать нажатия на элементы меню, создавать подменю и использовать продвинутые функции, такие как ленивая загрузка элементов и эффекты фона. Авторы подробно объясняют, как использовать пакет star_menu, чтобы ваши меню выглядели современно и привлекательно.
🇷🇺 Читать статью на русском
🇬🇧 Read the article in English
🌐 Читать оригинал
Все подобные новости ищите по хэштегу #FlutterPulseMedium
FlutterPulse — канал о мире Flutter!
#flutter #dart #flutterpulse #FlutterPulseMedium #mobiledev #appdev #contextmenu #starmmenu
Хотите добавить в своё Flutter-приложение стильные и функциональные контекстные меню? В статье ниже вы найдёте подробное руководство по использованию пакета star_menu!
В этой статье вы узнаете, как создавать контекстные меню различных форм (линейные, круговые, сеточные) и настраивать их анимацию. Вы научитесь обрабатывать нажатия на элементы меню, создавать подменю и использовать продвинутые функции, такие как ленивая загрузка элементов и эффекты фона. Авторы подробно объясняют, как использовать пакет star_menu, чтобы ваши меню выглядели современно и привлекательно.
🇷🇺 Читать статью на русском
🇬🇧 Read the article in English
🌐 Читать оригинал
Все подобные новости ищите по хэштегу #FlutterPulseMedium
FlutterPulse — канал о мире Flutter!
#flutter #dart #flutterpulse #FlutterPulseMedium #mobiledev #appdev #contextmenu #starmmenu
Оптимизация производительности Flutter: секреты и советы
Flutter даёт разработчикам огромную власть над созданием интерфейсов, но с великой мощью приходит и великая ответственность! 😅 Если ваше приложение начинает тормозить или лагать, причина часто кроется в неэффективных или слишком "дорогих" виджетах.
В этой статье мы разберём самые "дорогие" виджеты во Flutter, объясним, почему они замедляют работу приложения, и поделимся реальными советами по их оптимизации. Вы узнаете, как избежать частых перестроений, сложных операций GPU/CPU и утечек памяти. Особое внимание уделено таким виджетам, как
🇷🇺 Читать статью на русском
🇬🇧 Read the article in English
🌐 Читать оригинал
Все подобные новости ищите по хэштегу #FlutterPulseMedium ✨ Напишите, понравилась ли вам эта рубрика!
FlutterPulse — канал о мире Flutter!
#flutter #dart #flutterpulse #FlutterPulseMedium #performance #optimization #mobiledev #appdev #ui #ux
Flutter даёт разработчикам огромную власть над созданием интерфейсов, но с великой мощью приходит и великая ответственность! 😅 Если ваше приложение начинает тормозить или лагать, причина часто кроется в неэффективных или слишком "дорогих" виджетах.
В этой статье мы разберём самые "дорогие" виджеты во Flutter, объясним, почему они замедляют работу приложения, и поделимся реальными советами по их оптимизации. Вы узнаете, как избежать частых перестроений, сложных операций GPU/CPU и утечек памяти. Особое внимание уделено таким виджетам, как
ListView, CustomPaint, BackdropFilter и Text, а также способам оптимизации rebuild-ов и использованию DevTools для поиска узких мест.🇷🇺 Читать статью на русском
🇬🇧 Read the article in English
🌐 Читать оригинал
Все подобные новости ищите по хэштегу #FlutterPulseMedium ✨ Напишите, понравилась ли вам эта рубрика!
FlutterPulse — канал о мире Flutter!
#flutter #dart #flutterpulse #FlutterPulseMedium #performance #optimization #mobiledev #appdev #ui #ux
Скрытый шедевр Flutter: BackdropFilter
Вы знали, что существует простой способ добавить премиальный и современный вид вашему приложению с помощью всего одного виджета? 🤯
В этой статье мы рассмотрим малоизвестный, но очень мощный виджет
В статье описаны различные приёмы использования
🇷🇺 Читать статью на русском
🇬🇧 Read the article in English
🌐 Читать оригинал
Все подобные новости ищите по хэштегу #FlutterPulseMedium ✨ Напишите, понравилась ли вам рубрика!
FlutterPulse — канал о мире Flutter!
#flutter #dart #flutterpulse #FlutterPulseMedium #mobiledev #appdev #ui #ux #widgets
Вы знали, что существует простой способ добавить премиальный и современный вид вашему приложению с помощью всего одного виджета? 🤯
В этой статье мы рассмотрим малоизвестный, но очень мощный виджет
BackdropFilter, который позволяет применять эффекты размытия и фильтрации к фону вашего приложения. Вы узнаете, как использовать его для создания потрясающих UI-эффектов, таких как эффект матового стекла в iOS, и как он может улучшить визуальную эстетику вашего приложения.В статье описаны различные приёмы использования
BackdropFilter, включая создание эффекта размытия для отдельных элементов и полноэкранного размытия. Вы увидите примеры кода и узнаете, как использовать этот виджет вместе с другими, такими как Container и ClipRect, чтобы добиться желаемого эффекта.🇷🇺 Читать статью на русском
🇬🇧 Read the article in English
🌐 Читать оригинал
Все подобные новости ищите по хэштегу #FlutterPulseMedium ✨ Напишите, понравилась ли вам рубрика!
FlutterPulse — канал о мире Flutter!
#flutter #dart #flutterpulse #FlutterPulseMedium #mobiledev #appdev #ui #ux #widgets
👍1
Flutter-архитектура, которая спасла команду от 6 месяцев переработок
Представьте, что добавление новой функции в ваше приложение вместо пары недель превращается в шестинедельный кошмар. Команда TechCorp столкнулась именно с этой проблемой, пока не изменила подход к архитектуре своего Flutter-приложения.
В статье разработчики делятся своим опытом о том, как они перешли от хаотичного кода к четкой MVVM-архитектуре с Repository и Service слоями. Они описывают, как разделили бизнес-логику, работу с API и UI, и какие результаты получили после рефакторинга. Вы узнаете, как улучшить поддерживаемость кода, сократить время разработки новых фич и уменьшить количество багов.
🇷🇺 Читать статью на русском
🇬🇧 Read the article in English
🌐 Читать оригинал
Все подобные новости ищите по хэштегу #FlutterPulseMedium ✨ Оцените рубрику!
FlutterPulse — канал о мире Flutter!
#flutter #dart #flutterpulse #FlutterPulseMedium #mobiledev #appdev #softwarearchitecture #mvvm #flutterarchitecture #tech #programming #development #coding #softwareengineering
Представьте, что добавление новой функции в ваше приложение вместо пары недель превращается в шестинедельный кошмар. Команда TechCorp столкнулась именно с этой проблемой, пока не изменила подход к архитектуре своего Flutter-приложения.
В статье разработчики делятся своим опытом о том, как они перешли от хаотичного кода к четкой MVVM-архитектуре с Repository и Service слоями. Они описывают, как разделили бизнес-логику, работу с API и UI, и какие результаты получили после рефакторинга. Вы узнаете, как улучшить поддерживаемость кода, сократить время разработки новых фич и уменьшить количество багов.
🇷🇺 Читать статью на русском
🇬🇧 Read the article in English
🌐 Читать оригинал
Все подобные новости ищите по хэштегу #FlutterPulseMedium ✨ Оцените рубрику!
FlutterPulse — канал о мире Flutter!
#flutter #dart #flutterpulse #FlutterPulseMedium #mobiledev #appdev #softwarearchitecture #mvvm #flutterarchitecture #tech #programming #development #coding #softwareengineering
😁2👍1💩1
Почему экраны-заставки Flutter такие странные?
Вы когда-нибудь строили приложение на Flutter и задавались вопросом: "Почему мой экран-заставка выглядит так странно?" 🤔
В этой статье автор простым и понятным языком объясняет, почему экраны-заставки в Flutter ведут себя так, как они себя ведут. Вы узнаете о основных причинах странного поведения экранов-заставок, таких как:
👉 Flutter не контролирует экран-заставку, это делает операционная система
✅ Android и iOS ведут себя по-разному: Android непредсказуем, а iOS слишком строг
⚙️ Проблема "двойной заставки" возникает из-за того, что ОС заканчивает показывать заставку, а Flutter ещё не готов
📌 Первая отрисовка кадра занимает время, и если ваша домашняя страница тяжелая, это может вызвать задержку
Автор также дает советы, как исправить ситуацию:
🔹 Используйте пакет
✅ Перенесите тяжелую работу из функции main() в другое место
👉 Добавьте внутренний экран-заставку, чтобы скрыть недостатки
⚙️ Избегайте тяжелых первых экранов и используйте оптимизированные изображения
🇷🇺 Читать статью на русском
🇬🇧 Read the article in English
🌐 Читать оригинал
Все подобные новости ищите по хэштегу #FlutterPulseMedium ✨ Напишите, чтобы подписчики оценили рубрику.
FlutterPulse — канал о мире Flutter!
#flutter #dart #flutterpulse #FlutterPulseMedium #mobiledev #appdev #splashscreen #optimization
Вы когда-нибудь строили приложение на Flutter и задавались вопросом: "Почему мой экран-заставка выглядит так странно?" 🤔
В этой статье автор простым и понятным языком объясняет, почему экраны-заставки в Flutter ведут себя так, как они себя ведут. Вы узнаете о основных причинах странного поведения экранов-заставок, таких как:
👉 Flutter не контролирует экран-заставку, это делает операционная система
✅ Android и iOS ведут себя по-разному: Android непредсказуем, а iOS слишком строг
⚙️ Проблема "двойной заставки" возникает из-за того, что ОС заканчивает показывать заставку, а Flutter ещё не готов
📌 Первая отрисовка кадра занимает время, и если ваша домашняя страница тяжелая, это может вызвать задержку
Автор также дает советы, как исправить ситуацию:
🔹 Используйте пакет
flutter_native_splash правильно✅ Перенесите тяжелую работу из функции main() в другое место
👉 Добавьте внутренний экран-заставку, чтобы скрыть недостатки
⚙️ Избегайте тяжелых первых экранов и используйте оптимизированные изображения
🇷🇺 Читать статью на русском
🇬🇧 Read the article in English
🌐 Читать оригинал
Все подобные новости ищите по хэштегу #FlutterPulseMedium ✨ Напишите, чтобы подписчики оценили рубрику.
FlutterPulse — канал о мире Flutter!
#flutter #dart #flutterpulse #FlutterPulseMedium #mobiledev #appdev #splashscreen #optimization