Start Debugging

Блог

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

Expanded или Flexible во Flutter: разбор FlexFit.tight и FlexFit.loose

Используйте Expanded, когда дочерний виджет должен занять свою долю Row или Column, и Flexible, когда он может быть меньше своей доли. Замеры раскладки на Flutter 3.44 показывают, куда уходит оставшееся место, почему неплотные дочерние виджеты не отдают его соседям и когда при неограниченных ограничениях работает только Flexible.

Lazy<T> vs LazyInitializer.EnsureInitialized vs блокировка с двойной проверкой в C#

По умолчанию используйте Lazy<T>: он выполняет фабрику один раз, кеширует исключения, а чтение после инициализации слишком дёшево, чтобы его можно было измерить. LazyInitializer.EnsureInitialized подходит, когда вы лениво заполняете много полей или ячеек массива и не можете позволить себе лишний объект на каждое значение. Ручная блокировка с двойной проверкой на .NET 10 почти никогда не оправдана.

MAUI 10.0.120: BlazorWebView наконец принимает перетаскивание файлов в Windows и перетаскивание изображений в Android

.NET MAUI 10.0.120 включает AllowDrop для BlazorWebView в Windows и регистрирует AndroidX DropDataContentProvider в Android, поэтому зоны drop в Blazor Hybrid работают без платформенного кода. Что изменилось, новый переключатель MauiEnableAndroidWebViewDragDrop и предупреждение MAUI1002.

unawaited_futures и discarded_futures в Dart: какой линтер ловит какой вызов без await

unawaited_futures смотрит только внутрь async-тел, discarded_futures только внутрь синхронных, и оба пропускают стрелочные функции, tear-off и литералы коллекций. Разбор по случаям на Dart 3.12.2 и Flutter 3.44.8 и analysis_options.yaml, который я рекомендую.

Исправление: Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is X, expected version is Y (Flutter Android)

Зависимость собрана с версией Kotlin, которая как минимум на две минорные версии новее компилятора вашей сборки. Поднимите версию org.jetbrains.kotlin.android в settings.gradle.kts до X минус один или выше либо закрепите зависимость на старой версии.

Исправление: HttpProtocolException: The HTTP/2 server reset the stream. HTTP/2 error code 'PROTOCOL_ERROR'

Удалённая сторона отправила RST_STREAM с PROTOCOL_ERROR для одного запроса, и HttpClient не повторяет его сам. Выясните, какой узел сбросил поток, исправьте отклонённый запрос, повторяйте только идемпотентные вызовы или переведите этот узел на HTTP/1.1.
2026-10-21 mcpdotnetcsharp

MCP C# SDK 2.3: McpClient.ServerInfo теперь допускает null, и ваша сборка это заметит

ModelContextProtocol 2.3.0, выпущенный 20 октября 2026 года, меняет тип McpClient.ServerInfo с Implementation на Implementation?, потому что серверы 2026-07-28 могут не указывать свою идентичность в server/discover. Почему так, что ломается при warnings-as-errors и как это исправить одной строкой.

Что происходит с истёкшей записью MemoryCache и когда она на самом деле удаляется из памяти?

Истёкшая запись MemoryCache не удаляется по таймеру. Она остаётся в словаре, пока к ней не обратится чтение, не запустится фоновое сканирование с ограничением частоты или не начнётся уплотнение. Вот когда именно происходит каждое из этих событий и как добиться немедленного вытеснения.

Исправление: PlatformException(sign_in_failed, com.google.android.gms.common.api.ApiException: 10) при Google Sign-In во Flutter

ApiException: 10 означает DEVELOPER_ERROR: Google не узнаёт пару из имени пакета и SHA-1 сертификата подписи установленного APK. Зарегистрируйте SHA-1 ключа, которым действительно подписана сборка, и передайте Web client ID как serverClientId.