Flutter Pulse
513 subscribers
323 photos
701 links
На канале будут новости про flutter с сайтов, информация об обновлении пакетов, а также авторский контент.
Download Telegram
Как сделать GitLab CI/CD вашим лучшим другом для сборки и доставки Flutter приложений. Часть 1.
Узнайте о новом подходе к автоматизации CI/CD-процессов: преимущества self-hosted решений и настройка физической машины с GitLab CI/CD для Flutter-приложений 📈💻.
Выбор подхода для CI/CD: self-hosted или облачный сервис? Авторы рассматривают плюсы и минусы каждого варианта и объясняют, почему выбрали GitLab CI/CD для автоматизации процессов разработки 🤔.
Почему Docker-OSX не подходит для сборки iOS-приложений и как выбрать правильную физическую машину для CI/CD 📊.
Настройка GitLab Runner на macOS: 4 шага для бесперебойной работы 📈. Узнайте, как настроить автоматический вход, энергосбережение и связку ключей для стабильной работы Runner 🔑.
Обновление GitLab Runner на macOS: решение проблемы зависания и настройка для бесперебойной работы 🚀.
Новый скрипт автоматизации установки зависимостей для разработки мобильных приложений на iOS и Android 📱. Узнайте, как упростить процесс установки Xcode, Homebrew, Ruby, CocoaPods, Flutter и других необходимых инструментов 🛠.
Установка GitLab Runner на macOS: пошаговое руководство 📚. Узнайте, как настроить GitLab Runner для эффективной автоматизации задач на вашем Mac 🖥.
Настройка GitLab Runner для Flutter-проектов: регистрация и подготовка окружения 📈. Узнайте, как правильно настроить GitLab Runner для сборки приложений под Android и iOS 📊.
Установка Flutter и Ruby на macOS: пошаговое руководство 📚. Узнайте, как настроить среду разработки для создания кроссплатформенных приложений с помощью Flutter и управления версиями Ruby 📈.
Настройка CI/CD для Flutter: подготовка физической машины к автоматизации сборки и тестирования приложений для Android и iOS 📊.
Читайте в новой статье все секреты автоматизации процессов разработки с помощью GitLab CI/CD и Flutter! 📚
#flutter #dart #flutterpulse #gitlab #cicd #automatization #development #programming #mobileapps #ios #android #macos #ruby #xcode #homebrew #cocoapods #gitlabrunner
Отслеживание изменений размера окна

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

Используем WidgetBindingObserver

Для того чтобы отслеживать изменения размера окна, мы будем использовать `WidgetBindingObserver`. Этот миксин позволяет нам получать уведомления о различных событиях, происходящих в приложении, включая изменения размера окна 📱

Пример кода



class MetricsReactor extends StatefulWidget {
const MetricsReactor({Key? key}) : super(key: key);

@override
_MetricsReactorState createState() => _MetricsReactorState();
}

class _MetricsReactorState extends State<MetricsReactor> with WidgetsBindingObserver {
late Size _lastSize;

WidgetsBinding get widgetBinding => WidgetsBinding.instance!;

@override
void initState() {
super.initState();
_lastSize = WidgetsBinding.instance!.window.physicalSize;
widgetBinding.addObserver(this);
}

@override
void dispose() {
widgetBinding.removeObserver(this);
super.dispose();
}

@override
void didChangeMetrics() {
setState(() {
_lastSize = widgetBinding.window.physicalSize;
});
}

@override
Widget build(BuildContext context) {
return Text('Текущий размер: $_lastSize');
}
}



В этом примере мы создаем `StatefulWidget` под названием `MetricsReactor`, который использует `WidgetsBindingObserver` для отслеживания изменений размера окна. Когда размер окна изменяется, мы обновляем состояние виджета с новым размером 📈

Оцените нашу новую рубрику! 👍 Мы надеемся, что вам понравится эта рубрика и вы найдете ее полезной. Оцените нас и подпишитесь на наш канал, чтобы быть в курсе всех последних советов и новостей из мира Flutter 📲

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

#flutter #dart #flutterpulse #FlutterPulseTips #MobileDevelopment #FlutterTips #Programming #Development #Coding
👍2
Создаем защиту маршрута страницы

Привет, подписчики! 👋 Сегодня мы рассмотрим полезный совет по Flutter - создание защиты маршрута страницы. 🚀

Что это такое?

Защита маршрута страницы позволяет перенаправлять пользователя на другую страницу, если определенное условие не выполнено. 🔄

Пример реализации



Route<dynamic> route(RouteSettings settings) {
switch (settings.name) {
case 'init_account':
return MaterialPageRoute(
builder: (_) => AuthenticatedGuard(child: InitAccountPage()),
);
}
}

// AuthenticatedGuard внедряет нашу защиту, чтобы предотвратить доступ неавторизованного пользователя к нашей странице

class Guard extends StatelessWidget {
final Future<bool> canActivate;
final Widget child;
final String fallbackRoute;

const Guard({
Key? key,
required this.canActivate,
required this.child,
required this.fallbackRoute,
}) : super(key: key);

@override
Widget build(BuildContext context) {
return FutureBuilder<bool>(
future: canActivate,
builder: (_, isOk) {
if (!isOk.hasData || isOk.hasError) {
return Container();
}
if (isOk.data!) {
return child; // Показываем страницу, если условие выполнено
}
redirect(context); // Иначе перенаправляем
return Container();
},
);
}

redirect(BuildContext context) {
WidgetsBinding.instance!.addPostFrameCallback((timeStamp) {
Navigator.pushReplacementNamed(context, fallbackRoute);
});
}
}



Совет для нескольких условий: вы можете каскадировать защиты или просто объединить ваши условия. 🤔

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

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

#flutter #dart #flutterpulse #FlutterPulseTips #MobileDevelopment #FlutterTips #Programming #Development #Coding #FlutterCommunity