Skip to content

[Web] Rebuilding SelectionArea after disabling context menu triggers assertion failure #186459

Description

@kpsroka-klarmx

Steps to reproduce

  1. Run the sample code on web in debug mode.
  2. Press the "Disable ctx menu" button.

Expected results

Nothing happens.

Actual results

Debug assertion triggers. Red screen appears. Integration tests fail :(

This potentially can cause problems in production as well, but I haven't investigated what are the consequences.

Code sample

Code sample
import'package:flutter/material.dart';
import'package:flutter/services.dart';
voidmain() {
runApp(constMainApp());
}
classMainAppextendsStatelessWidget {
constMainApp({super.key});
@overrideWidgetbuild(BuildContext context) {
returnMaterialApp(home:constMyScaffold());
}
}
classMyScaffoldextendsStatefulWidget {
constMyScaffold({super.key});
@overrideState<MyScaffold> createState() =>_MyScaffoldState();
}
class_MyScaffoldStateextendsState<MyScaffold> {
@overrideWidgetbuild(BuildContext context) {
returnSelectionArea(
child:Scaffold(
body:Center(
child:TextButton(
child:Text('Disable ctx menu'),
onPressed: () async {
awaitBrowserContextMenu.disableContextMenu();
setState(() {});
},
),
),
),
);
}
}

Screenshots or Video

No response

Logs

Logs
══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════The following assertion was thrown building SelectableRegionSelectionStatusScope:Assertion failed:file:///Users/krzysztof/lib/flutter/packages/flutter/lib/src/widgets/selectable_region.dart:2025:12_selectable == nullis not trueThe relevant error-causing widget was: SelectionArea SelectionArea:file:///Users/krzysztof/Workspace/web_selectable_region_repro/lib/main.dart:27:12When the exception was thrown, this was the stack:dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 274:3 throw_dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 44:3 assertFailedpackage:flutter/src/widgets/selectable_region.dart 2025:24 addpackage:flutter/src/rendering/selection.dart 299:7 [_updateSelectionRegistrarSubscription]package:flutter/src/rendering/selection.dart 280:5 set registrarpackage:flutter/src/widgets/selection_container.dart 119:9 initStatepackage:flutter/src/widgets/framework.dart 5950:55 [_firstBuild]package:flutter/src/widgets/framework.dart 5793:5 mount... Normal element mounting (7 frames)package:flutter/src/widgets/framework.dart 4587:19 inflateWidgetpackage:flutter/src/widgets/framework.dart 4053:20 updateChildpackage:flutter/src/widgets/framework.dart 5841:16 performRebuildpackage:flutter/src/widgets/framework.dart 5529:7 rebuildpackage:flutter/src/widgets/framework.dart 6149:5 updatepackage:flutter/src/widgets/inherited_notifier.dart 108:11 updatepackage:flutter/src/widgets/framework.dart 4037:14 updateChildpackage:flutter/src/widgets/framework.dart 5841:16 performRebuildpackage:flutter/src/widgets/framework.dart 5982:11 performRebuildpackage:flutter/src/widgets/framework.dart 5529:7 rebuildpackage:flutter/src/widgets/framework.dart 6007:5 updatepackage:flutter/src/widgets/framework.dart 4037:14 updateChildpackage:flutter/src/widgets/framework.dart 5841:16 performRebuildpackage:flutter/src/widgets/framework.dart 5529:7 rebuildpackage:flutter/src/widgets/framework.dart 6149:5 updatepackage:flutter/src/widgets/framework.dart 4037:14 updateChildpackage:flutter/src/widgets/framework.dart 5841:16 performRebuildpackage:flutter/src/widgets/framework.dart 5982:11 performRebuildpackage:flutter/src/widgets/framework.dart 5529:7 rebuildpackage:flutter/src/widgets/framework.dart 6007:5 updatepackage:flutter/src/widgets/framework.dart 4037:14 updateChildpackage:flutter/src/widgets/framework.dart 7122:14 updatepackage:flutter/src/widgets/framework.dart 4037:14 updateChildpackage:flutter/src/widgets/framework.dart 5841:16 performRebuildpackage:flutter/src/widgets/framework.dart 5982:11 performRebuildpackage:flutter/src/widgets/framework.dart 5529:7 rebuildpackage:flutter/src/widgets/framework.dart 6007:5 updatepackage:flutter/src/widgets/framework.dart 4037:14 updateChildpackage:flutter/src/widgets/framework.dart 7122:14 updatepackage:flutter/src/widgets/framework.dart 4037:14 updateChildpackage:flutter/src/widgets/framework.dart 7122:14 updatepackage:flutter/src/widgets/framework.dart 4037:14 updateChildpackage:flutter/src/widgets/framework.dart 5841:16 performRebuildpackage:flutter/src/widgets/framework.dart 5982:11 performRebuildpackage:flutter/src/widgets/framework.dart 5529:7 rebuildpackage:flutter/src/widgets/framework.dart 6007:5 updatepackage:flutter/src/widgets/framework.dart 4037:14 updateChildpackage:flutter/src/widgets/framework.dart 5841:16 performRebuildpackage:flutter/src/widgets/framework.dart 5982:11 performRebuildpackage:flutter/src/widgets/framework.dart 5529:7 rebuildpackage:flutter/src/widgets/framework.dart 6007:5 updatepackage:flutter/src/widgets/framework.dart 4037:14 updateChildpackage:flutter/src/widgets/framework.dart 5841:16 performRebuildpackage:flutter/src/widgets/framework.dart 5982:11 performRebuildpackage:flutter/src/widgets/framework.dart 5529:7 rebuildpackage:flutter/src/widgets/framework.dart 2750:14 [_tryRebuild]package:flutter/src/widgets/framework.dart 2807:11 [_flushDirtyElements]package:flutter/src/widgets/framework.dart 3111:17 buildScopepackage:flutter/src/widgets/binding.dart 1302:9 drawFramepackage:flutter/src/rendering/binding.dart 495:5 [_handlePersistentFrameCallback]dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 118:77 tearpackage:flutter/src/scheduler/binding.dart 1430:7 [_invokeFrameCallback]package:flutter/src/scheduler/binding.dart 1345:9 handleDrawFramepackage:flutter/src/scheduler/binding.dart 1198:5 [_handleDrawFrame]dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 118:77 tearlib/_engine/engine/platform_dispatcher.dart 1689:5 invokelib/_engine/engine/platform_dispatcher.dart 265:5 invokeOnDrawFramelib/_engine/engine/frame_service.dart 209:32 [_renderFrame]lib/_engine/engine/frame_service.dart 117:9 <fn>dart-sdk/lib/async/zone.dart 962:54 runUnarydart-sdk/lib/async/zone.dart 917:26 <fn>dart-sdk/lib/_internal/js_dev_runtime/patch/js_allow_interop_patch.dart 224:27 _callDartFunctionFast1dart-sdk/lib/_internal/js_dev_runtime/patch/js_allow_interop_patch.dart 84:15 ret

Flutter Doctor output

Doctor output
[✓] Flutter (Channel stable, 3.41.9, on macOS 26.4.1 25E253 darwin-arm64, locale en-US) [330ms] • Flutter version 3.41.9 on channel stable at /Users/krzysztof/lib/flutter • Upstream repository https://github.com/flutter/flutter.git • Framework revision 00b0c91f06 (2 weeks ago), 2026-04-29 10:03:19 -0700 • Engine revision 42d3d75a56 • Dart version 3.11.5 • DevTools version 2.54.2 • Feature flags: enable-web, enable-linux-desktop, enable-macos-desktop, enable-windows-desktop, enable-android, enable-ios, cli-animations, enable-native-assets, omit-legacy-version-file, enable-lldb-debugging, enable-uiscene-migration[✓] Android toolchain - develop for Android devices (Android SDK version 36.1.0) [889ms] • Android SDK at /Users/krzysztof/Library/Android/sdk • Emulator version 36.3.10.0 (build_id 14472402) (CL:N/A) • Platform android-36, build-tools 36.1.0 • ANDROID_HOME = /Users/krzysztof/Library/Android/sdk • Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java This is the JDK bundled with the latest Android Studio installation on this machine. To manually set the JDK path, use: `flutter config --jdk-dir="path/to/jdk"`. • Java version OpenJDK Runtime Environment (build 21.0.8+-14196175-b1038.72) • All Android licenses accepted.[!] Xcode - develop for iOS and macOS (Xcode 26.4.1) [640ms] • Xcode at /Applications/Xcode.app/Contents/Developer • Build 17E202 ✗ Unable to get list of installed Simulator runtimes. • CocoaPods version 1.16.2[✓] Chrome - develop for the web [5ms] • CHROME_EXECUTABLE = /Applications/Google Chrome for Testing.app/Contents/MacOS/Google Chrome for Testing[✓] Connected device (2 available) [5.8s] • macOS (desktop) • macos • darwin-arm64 • macOS 26.4.1 25E253 darwin-arm64 • Chrome (web) • chrome • web-javascript • Google Chrome for Testing 147.0.7727.57[✓] Network resources [208ms] • All expected network resources are available.! Doctor found issues in 1 category.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Important issues not at the top of the work listc: crashStack traces logged to the consolef: selectionSelectableRegion, SelectionArea, SelectionContainer, Selectable, and related APIsframeworkflutter/packages/flutter repository. See also f: labels.has reproducible stepsThe issue has been confirmed reproducible and is ready to work onplatform-webWeb applications specificallyteam-text-inputOwned by Text Input teamtriaged-text-inputTriaged by Text Input team

    Type

    No type

    Projects

    Status
    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions