Автоматическое создание новой версии в Apple Store
Перестаньте тратить время на заполнение метаданных для каждого языка!
Когда это полезно?
Каждый раз, когда вы публикуете новую версию приложения в Apple Store Connect, вам приходится заполнять 2 поля для каждого языка. Но вы также можете использовать это для обновления других полей метаданных.
Шаги для автоматизации процесса:
1. Установите
2. Инициализируйте
3. Настройте учетные данные Apple Store Connect в файле
4. Добавьте следующий код в файл
Использование:
1. Скачайте метаданные:
2. Создайте новую версию с предварительно заполненными данными для всех языков:
Оцените новую рубрику и напишите свое мнение! 😊👍
Все подобные новости можно найти по хэштегу #FlutterPulseTips
#flutter #dart #flutterpulse #FlutterPulseTips #MobileDev #AppStore #Fastlane #DevTips #ProductivityTips
Перестаньте тратить время на заполнение метаданных для каждого языка!
Когда это полезно?
Каждый раз, когда вы публикуете новую версию приложения в Apple Store Connect, вам приходится заполнять 2 поля для каждого языка. Но вы также можете использовать это для обновления других полей метаданных.
Шаги для автоматизации процесса:
1. Установите
fastlane
.2. Инициализируйте
fastlane
в папке iOS вашего проекта:fastlane init
3. Настройте учетные данные Apple Store Connect в файле
Appfile
:
app_identifier("app.your.app.id") # Идентификатор пакета вашего приложения
apple_id("your@email.com") # Ваша учетная запись Apple ID
team_id("TEAM_ID") # ID команды Apple Store Connect
itc_team_name("TEAM_NAME") # Имя команды в App Store Connect
4. Добавьте следующий код в файл
Fastfile
:
default_platform(:ios)
platform :ios do
desc "Скачать метаданные из App Store Connect"
lane :download_metadata do
# Код для скачивания метаданных
end
desc "Создать новую версию в App Store Connect"
lane :release_new_version do |options|
# Код для создания новой версии
deliver(
app_version: options[:version],
skip_binary_upload: true,
force: true,
submit_for_review: false,
automatic_release: false,
metadata_path: "fastlane/metadata",
release_notes: "fastlane/metadata/#{options[:version]}/release_notes.txt",
skip_screenshots: true
)
end
end
Использование:
1. Скачайте метаданные:
fastlane deliver download_metadata
2. Создайте новую версию с предварительно заполненными данными для всех языков:
fastlane release_new_version version:"3.12.3"
Оцените новую рубрику и напишите свое мнение! 😊👍
Все подобные новости можно найти по хэштегу #FlutterPulseTips
#flutter #dart #flutterpulse #FlutterPulseTips #MobileDev #AppStore #Fastlane #DevTips #ProductivityTips
Отслеживание видимости клавиатуры
Без каких-либо плагинов 😉
В разработке Flutter-приложений часто возникает необходимость отслеживать состояние клавиатуры (видима она или нет). Это может быть полезно, например, когда нужно скрыть или показать определенные элементы интерфейса в зависимости от того, открыта клавиатура или нет.
Проблема:
Иногда клавиатура заставляет некоторые элементы контента перемещаться вверх, и вы можете захотеть скрыть определенные элементы на экране, когда пользователь печатает. Я предпочитаю иметь статическую кнопку действия внизу. Однако проблема в том, что эта кнопка может перекрывать поле ввода, пока пользователь печатает. Поэтому я использую метод, чтобы скрыть кнопку действия, когда клавиатура открыта.
Решение:
Для отслеживания состояния клавиатуры мы можем использовать виджет
Использование:
Виджет
Оцените новую рубрику и напишите свое мнение в комментариях! 👍
Все подобные новости можно найти по хэштегу #FlutterPulseTips
#flutter #dart #flutterpulse #FlutterPulseTips #MobileDev #UIUX #CodingTips #AppDev #DevTips
Без каких-либо плагинов 😉
В разработке Flutter-приложений часто возникает необходимость отслеживать состояние клавиатуры (видима она или нет). Это может быть полезно, например, когда нужно скрыть или показать определенные элементы интерфейса в зависимости от того, открыта клавиатура или нет.
Проблема:
Иногда клавиатура заставляет некоторые элементы контента перемещаться вверх, и вы можете захотеть скрыть определенные элементы на экране, когда пользователь печатает. Я предпочитаю иметь статическую кнопку действия внизу. Однако проблема в том, что эта кнопка может перекрывать поле ввода, пока пользователь печатает. Поэтому я использую метод, чтобы скрыть кнопку действия, когда клавиатура открыта.
Решение:
Для отслеживания состояния клавиатуры мы можем использовать виджет
KeyboardVisibility
, который не требует установки дополнительных плагинов.
import 'package:flutter/material.dart';
// состояние клавиатуры
enum KeyboardVisibilityState { visible, hidden }
// определение функции слушателя
typedef OnKeyboardStateChanged = void Function(KeyboardVisibilityState state);
// stateful виджет для отслеживания изменения видимости клавиатуры
class KeyboardVisibility extends StatefulWidget {
final Widget child;
final OnKeyboardStateChanged onKeyboardStateChanged;
const KeyboardVisibility({
super.key,
required this.child,
required this.onKeyboardStateChanged,
});
@override
State<KeyboardVisibility> createState() => _KeyboardVisibilityState();
}
class _KeyboardVisibilityState extends State<KeyboardVisibility> with WidgetsBindingObserver {
@override
void initState() {
super.initState();
WidgetsBinding.instance.addObserver(this);
}
@override
void dispose() {
WidgetsBinding.instance.removeObserver(this);
super.dispose();
}
@override
void didChangeMetrics() {
super.didChangeMetrics();
checkState();
}
void checkState() {
final value = WidgetsBinding.instance.platformDispatcher.views.first.viewInsets.bottom;
switch (value != 0.0) {
case true:
widget.onKeyboardStateChanged(KeyboardVisibilityState.visible);
case false:
widget.onKeyboardStateChanged(KeyboardVisibilityState.hidden);
}
}
@override
Widget build(BuildContext context) {
return widget.child;
}
}
Использование:
Виджет
KeyboardVisibility
можно использовать следующим образом:
KeyboardVisibility(
onKeyboardStateChanged: (state) => _showOrHideBottomAction(state),
child: Form(...),
)
Оцените новую рубрику и напишите свое мнение в комментариях! 👍
Все подобные новости можно найти по хэштегу #FlutterPulseTips
#flutter #dart #flutterpulse #FlutterPulseTips #MobileDev #UIUX #CodingTips #AppDev #DevTips