Start Debugging

Тег: how-to

73 статей · Страница1из8

2026-10-25 flutterdartios
Как заблокировать ориентацию экрана для одного экрана во Flutter (и почему многозадачность на iPad её игнорирует)
Как зафиксировать один маршрут Flutter в альбомной или портретной ориентации через SystemChrome.setPreferredOrientations, не ломая остальное приложение: блокировка на основе стека, которая переживает pushReplacement и восстанавливается при pop, почему пустой список не годится для сброса, почему многозадачность iPad и большие экраны Android 16 игнорируют блокировку и что означает UIRequiresFullScreen после iPadOS 26 и iOS 27 SDK. Проверено на Flutter 3.47.8 с Dart 3.13.7 и Xcode 27.1.
Как настроить самоссылающуюся связь многие-ко-многим (подписчики и подписки) в EF Core
Моделируем подписчиков и подписки на одной сущности User в EF Core 11: что строит конвенция, почему SQL Server молча превращает один внешний ключ соединительной таблицы в ClientCascade, как сопоставить явную сущность Follow с временной меткой и как удалить пользователя без ошибок 547 и 1785.
Как пометить ответ действия контроллера как допускающий null во встроенном документе OpenAPI в ASP.NET Core
Microsoft.AspNetCore.OpenApi помечает ответ как допускающий null, только когда действие возвращает голый T? (а в .NET 10 не помечает даже Task<T?>). ActionResult<T?> и IActionResult теряют аннотацию и в .NET 10, и в .NET 11 RC2. Здесь разобрано, почему так происходит, показан проверенный трансформер операций, который это исправляет, и ловушка с 204 No Content, из-за которой спецификация лжёт, пока вы не измените форматтер MVC.
2026-10-19 flutterdarttheming
Как определить собственные дизайн-токены через ThemeExtension и анимировать их при переключении между светлой и тёмной темой во Flutter
Унаследуйте класс от ThemeExtension, зарегистрируйте по одному экземпляру в каждом ThemeData через список extensions, читайте его через Theme.of(context).extension<T>() и напишите настоящий lerp, чтобы AnimatedTheme в MaterialApp интерполировал ваши токены при переключении светлой и тёмной темы. Разобраны цвета, радиусы, тени, текстовые стили и булевы значения, падение при отсутствующем расширении, ловушка copyWith, которая отбрасывает все остальные расширения, и причина, по которой нужны == и hashCode. Всё проверено виджет-тестами на Flutter 3.44.8.
Как заставить AnimatedSwitcher анимировать смену, если тип дочернего виджета не меняется во Flutter
AnimatedSwitcher запускает переход только тогда, когда Widget.canUpdate считает новый дочерний виджет другим, поэтому Text на Text без ключа просто обновляется на месте. Здесь описано исправление в одну строку, где именно должен стоять ключ, почему UniqueKey - ловушка, ошибка направления сдвига из-за статического transitionBuilder и скачок раскладки из-за Stack по умолчанию. Всё проверено виджет-тестами на Flutter 3.44.8.
2026-10-19 flutterdartandroid
Как восстановить состояние UI после остановки процесса Android во Flutter с помощью RestorationMixin
Android завершает фоновые приложения Flutter, чтобы освободить память, и когда пользователь возвращается, каждый StatefulWidget начинает с нуля. Здесь показано, как включить восстановление через restorationScopeId, RestorationMixin и свойства Restorable, восстановить текстовые поля, позиции прокрутки и открытые маршруты, написать собственный RestorableValue и протестировать всё это с помощью restartAndRestore и adb. Проверено на Flutter 3.44.8 и эмуляторе Android 16.
Как перехватывать необработанные асинхронные ошибки во Flutter с помощью runZonedGuarded и PlatformDispatcher.instance.onError
FlutterError.onError видит только ошибки, возникшие внутри колбэков фреймворка. Future без await, таймеры, потоки и код после await попадают в другое место. Здесь показано, какой обработчик какую ошибку ловит (замеры на Flutter 3.44.8), и настройка main(), которая перехватывает их все, в том числе в вебе.
2026-10-18 dartflutterstreams
Как повторять последнее значение для поздних подписчиков потока Dart без BehaviorSubject из rxdart
Broadcast StreamController теряет все события, произошедшие до подписки. Вот замена BehaviorSubject без зависимостей на основе Stream.multi, расширение replayLatest() для уже существующих потоков, ускоренный вариант на async*, который молча теряет события, и нюанс с initialData у StreamBuilder. Всё проверено на Dart 3.12.2.
Как отбросить буферизованные нажатия клавиш перед Console.ReadKey в игровом цикле консольного приложения на C#
Очищайте буфер ввода консоли с помощью while (Console.KeyAvailable) Console.ReadKey(true) перед ожиданием новой клавиши и делайте это в каждом кадре игрового цикла, чтобы автоповтор не копился. Как устроен буфер в Windows и Unix в .NET 10, почему зажатые клавиши отстают, ловушка с эхо в Unix и FlushConsoleInputBuffer.
Как проверить, отслеживается ли сущность в DbContext, перед её подключением в EF Core
Используйте DbSet.Local.FindEntry(key), чтобы спросить у трекера изменений, отслеживается ли сущность с заданным ключом, без обращения к базе данных и без перебора. Почему Entry(entity).State вводит в заблуждение, почему Find выполняет запрос, и проверенный помощник AttachOrMerge для EF Core 10.
Вперёд