Start Debugging

Тег: migration

50 статей · Страница1из5

Миграция Flutter-приложения с Color.withOpacity на Color.withValues (Flutter 3.27+)
Замените устаревшие Color.withOpacity, opacity, value, red, green, blue и alpha на withValues, .a/.r/.g/.b и toARGB32. Что dart fix перепишет за вас, четыре геттера, которые он оставляет, почему после замены ломаются точные проверки цветов и поиск в Map<Color, T> и как withOpacity молча теряет Display P3. Измерено на Flutter 3.44.8 с Dart 3.12.2.
Миграция Flutter-приложения с WidgetsBindingObserver.didChangeAppLifecycleState на AppLifecycleListener (Flutter 3.13+)
Замените самописный код жизненного цикла на WidgetsBindingObserver на AppLifecycleListener: соответствие колбэков, конечный автомат, который он навязывает, новое состояние hidden, ломающее исчерпывающие switch, запросы на выход на десктопе и тест, который внезапно падает на assert. Проверено на Flutter 3.44.8 и Dart 3.12.2.
Миграция локального хранилища Flutter-приложения с Hive на Drift (hive_ce 2.22 на drift 2.35)
Однократный и устойчивый к сбоям импорт существующих боксов Hive в базу SQLite drift на устройстве пользователя: проектирование схемы, функция импорта, идемпотентность, удаление боксов и два подводных камня, которые незаметно портят данные (точность DateTime и конфликты имён классов). Проверено на Flutter 3.44.8 с hive_ce 2.22.0 и drift 2.35.2.
Миграция Blazor-приложения с маршрутизируемыми компонентами в другой сборке с .NET 8 на .NET 10
Обновление Blazor Web App, страницы которого находятся в библиотеке классов Razor или в проекте .Client, с .NET 8 на .NET 10: что остаётся прежним (обе регистрации AdditionalAssemblies) и четыре вещи, которые ломаются, от 404 на blazor.web.js в тонких хостах до пустых страниц NotFoundPage. Замеры на ASP.NET Core 8.0.32 и 10.0.10.
2026-10-09 migrationflutterios
Миграция iOS-приложения на Flutter с CocoaPods на Swift Package Manager (Flutter 3.44 - 3.47)
Во Flutter 3.44 Swift Package Manager стал вариантом по умолчанию для iOS и macOS, но существующее приложение остаётся на CocoaPods, пока вы его не уберёте. Как проверить, какие плагины готовы к SwiftPM, дать инструменту перенести проект Xcode, безопасно удалить Podfile, разобраться с плагинами только для pods и собственной логикой в Podfile, а при необходимости откатиться.
Миграция настольного приложения Flutter для Windows или Linux на Impeller (Flutter 3.47)
Flutter 3.47 делает Impeller рендерером по умолчанию в Windows и Linux. Что на самом деле меняется под капотом (это по-прежнему OpenGL ES, а не Vulkan), как сравнить с Skia на готовой сборке, переключатель отключения для отдельной машины в релизных сборках и почему golden-тесты ничего не заметят.
Миграция пользовательских переходов между страницами после реорганизации page transition builders во Flutter (Flutter 3.44 - 3.47)
Flutter перенёс PageTransitionsBuilder и два встроенных билдера в слой widgets, а CupertinoPageTransitionsBuilder вынес из Material. Что на самом деле ломается (один импорт, с вводящей в заблуждение ошибкой 'Not a constant expression'), что делает dart fix и в чём он ошибается для проектов на material_ui, и как переписать пользовательские билдеры и маршруты, чтобы они вообще не зависели от Material.
Миграция приложения EF Core с Cosmos DB после изменения экранирования генерируемых id в EF Core 11
EF Core 11 перестает экранировать '/', '\', '?' и '#' в генерируемых значениях id для Cosmos DB, поэтому документы, записанные EF Core 8-10, больше не находятся по ключу. Как понять, затронуты ли вы, когда включать переключатель EscapeIllegalCosmosIdCharacters и как безопасно переписать id с помощью транзакционного пакета.
Миграция Android-проекта Flutter на AGP 9 со встроенным Kotlin
Полный путь от Flutter-приложения на AGP 8, которое применяет kotlin-android, до AGP 9.1 с android.builtInKotlin=true на Flutter 3.47. Каждый шаг я собрал и проверил, включая две правки, которые выглядят необязательными, но таковыми не являются: kotlinOptions вызывает ошибку компиляции при KGP 2.2+, а строку KGP в settings.gradle.kts нужно оставить.
Уходим от describeEnum во Flutter, пока его не удалили
describeEnum помечен устаревшим начиная с Flutter 3.16, а PR с его удалением уже одобрен. Как заменить каждый вызов на Enum.name (Flutter 3.47.4, Dart 3.13), что делать с классами, похожими на enum, и с диагностикой, как найти вызовы, спрятанные в зависимостях вроде flutter_svg 1.x, и как выглядит ошибка сборки после удаления.
Вперёд