Start Debugging

Блог

Страница 21 из 91

2026-09-07 flutterdarthow-to

Как сохранить значение appFlavor после hot restart при использовании flutter attach

У flutter attach нет опции --flavor, поэтому запускаемый им резидентный компилятор никогда не определяет FLUTTER_APP_FLAVOR, и константа appFlavor становится null при первом hot restart. Три решения: default-flavor в pubspec.yaml, flutter run --use-application-binary и канал платформы, читающий flavor нативно. Проверено на Flutter 3.47.2 / Dart 3.13.2.

Copilot Code Review теперь может одобрять pull request'ы

Changelog GitHub от 2026-09-01 разрешает Copilot отправлять одобряющее ревью, которое удовлетворяет правилу обязательных одобрений в репозитории. По умолчанию выключено, ограничивается glob-масками файлов и сбрасывается при новых коммитах. Разбираем, что реально меняется в защите веток.
2026-09-06 flutterdarthow-to

Как определить нажатие Backspace в пустом TextField во Flutter при вводе OTP

onChanged не срабатывает, потому что никакого редактирования не происходит, а на iOS метод deleteBackward в движке просто возвращается, ничего не тронув, если поле пустое. Два подхода, которые действительно работают на всех платформах: сторожевой символ нулевой ширины, гарантирующий редактирование, и один EditableText за отрисованными ячейками. Проверено на Flutter 3.47.2 / Dart 3.13.2.

Как использовать пессимистичную блокировку с UPDLOCK и SELECT ... FOR UPDATE в EF Core 11

В EF Core 11 по-прежнему нет API блокировок. Разбираем, как взять настоящую блокировку строки через FromSql: WITH (UPDLOCK, ROWLOCK) в SQL Server, FOR UPDATE в PostgreSQL, ловушка с подзапросом, которая молча расширяет блокировку, NOWAIT и SKIP LOCKED, повторы при дедлоках и что делать, когда строки ещё нет.

Как написать value converter в EF Core 11, который преобразует null из базы данных в ненулевое значение в коде

По умолчанию EF Core никогда не передаёт null в value converter. Разбираем внутренний конструктор convertsNulls, который это меняет, вызов IsRequired(false), от которого он зависит, почему он не работает с enum и другими типами значений, ловушку WHERE col = NULL, которую он создаёт, и два подхода, решающие задачу без внутреннего API.

Claude Code 2.1.261 добавляет /skill-doctor: находим skills, которые только тратят контекст

Тело skill загружается по требованию, а её имя и описание лежат в списке, который всегда находится в промпте и ограничен 1% окна контекста. Claude Code 2.1.261 добавляет /skill-doctor: отчёт показывает, какие загруженные skills не используются и во что обходится каждая, чтобы убрать их прежде, чем бюджет начнёт вытеснять те, которыми вы действительно пользуетесь.

ref.watch и ref.read в Riverpod: в чём разница и когда что использовать

ref.watch подписывается и перестраивает, ref.read читает один раз и никогда не перестраивает. Используйте watch в каждом методе build, а read только внутри обработчиков событий. Здесь матрица выбора, исходный код обоих методов во flutter_riverpod 3.4.3 и четыре тихих отказа: watch в обработчике, read в теле провайдера, read у провайдера autoDispose и read в роли оптимизации.

Что такое режим рендеринга в Blazor и какой из них выполняет мой компонент?

Режим рендеринга определяет, где выполняется компонент Razor и является ли он интерактивным. Здесь разобраны четыре режима в .NET 11, правила наследования, определяющие, что получит ваш компонент, и свойства RendererInfo и AssignedRenderMode, которые во время выполнения показывают, какой режим победил.

Что такое перехватчик EF Core и когда он нужен?

Перехватчик EF Core - это класс, который EF вызывает до и после операций вроде выполнения команды или SaveChanges и который может изменить или подавить их, а не только наблюдать. Здесь разобраны семь точек перехвата в EF Core 11, правила регистрации и времени жизни, а также случаи, когда фильтр запроса или обычное журналирование подходят лучше.

Переводим приложение .NET MAUI для Android на целевой уровень API 36

Google Play требует целевой уровень API 36 с 2026-08-31, продления действуют до 2026-11-01. Полный путь .NET MAUI от net9.0-android до API 36: смена target framework, жёстко прописанный uses-sdk, который молча удерживает старый уровень, режим edge-to-edge без возможности отказа, предиктивный жест назад и правила для больших экранов.