Skip to content

Semantic tree mismatch when closing a dialog and disabling a slider. #193706

Description

@lemteay

Steps to reproduce

Run this minimal reproducible sample, press the show dialog button and press the close button.

import 'package:flutter/material.dart';

void main() => runApp(const Example());

class Example extends StatelessWidget {
  const Example({super.key});

  @override
  Widget build(BuildContext context) => MaterialApp(home: _Page());
}

class _Page extends StatefulWidget {
  const _Page();

  @override
  State<_Page> createState() => _PageState();
}

class _PageState extends State<_Page> {
  final _semantics = WidgetsBinding.instance.ensureSemantics();
  bool _disabled = false;

  @override
  void dispose() {
    _semantics.dispose();
    super.dispose();
  }

  Future<void> _show() async {
    final route = DialogRoute<bool>(
      context: context,
      builder: (context) => AlertDialog(
        title: FilledButton(
          onPressed: () => Navigator.pop(context, true),
          child: const Text('Close'),
        ),
      ),
    );
    final start = await Navigator.of(context).push(route);
    if (start == true && mounted) setState(() => _disabled = true);
  }

  @override
  Widget build(BuildContext context) => Scaffold(
    body: Column(
      children: [
        Slider(value: 0.5, onChanged: _disabled ? null : (_) {}),
        FilledButton(onPressed: _show, child: const Text('Show dialog')),
      ],
    ),
  );
}

And exception happens. (Linux desktop)

Expected results

No errors.

Actual results

Framework assertion:

══╡ EXCEPTION CAUGHT BY SCHEDULER LIBRARY ╞═════════════════════════════════════════════════════════
The following assertion was thrown during a scheduler callback:
'package:flutter/src/rendering/object.dart': Failed assertion: line 6723 pos 12:
'identical(childRenderObject, parentRenderObject)': is not true.

Either the assertion indicates an error in the framework itself, or we should provide substantially
more information in this error message to help you determine and fix the underlying cause.
In either case, please report this assertion by filing a bug on GitHub:
  https://github.com/flutter/flutter/issues/new?template=02_bug.yml

When the exception was thrown, this was the stack:
#2      _SemanticsGeometry.computeChildGeometry (package:flutter/src/rendering/object.dart:6723:12)
#3      _RenderObjectSemantics._updateChildGeometry (package:flutter/src/rendering/object.dart:6132:67)
#4      _RenderObjectSemantics.ensureGeometry (package:flutter/src/rendering/object.dart:6122:5)
#5      PipelineOwner.flushSemantics (package:flutter/src/rendering/object.dart:1590:14)
#6      PipelineOwner.flushSemantics (package:flutter/src/rendering/object.dart:1653:15)
#7      RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:699:25)
#8      WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:1573:13)
#9      RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:558:5)
#10     SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1430:15)
#11     SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1345:9)
#12     SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:1198:5)
#13     _invoke (dart:ui/hooks.dart:441:13)
#14     PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:450:5)
#15     _drawFrame (dart:ui/hooks.dart:413:31)
(elided 2 frames from class _AssertionError)
════════════════════════════════════════════════════════════════════════════════════════════════════

Code sample

See steps to reproduce.

Screenshots or Video

Logs

No response

Flutter Doctor output

Doctor output
[✓] Flutter (Channel stable, 3.47.6, on Fedora Linux 44 (KDE Plasma Desktop Edition) 7.2.8-200.fc44.x86_64, locale en_US.UTF-8) [37ms]
    • Flutter version 3.47.6 on channel stable at /home/user/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 5fc346839b (35 hours ago), 2026-09-30 15:02:49 -0700
    • Engine revision 692136cb65
    • Dart version 3.13.5
    • DevTools version 2.60.0
    • Feature flags: enable-web, enable-linux-desktop, enable-macos-desktop, enable-windows-desktop, enable-android, enable-ios, cli-animations,
      enable-native-assets, enable-record-use, enable-swift-package-manager, omit-legacy-version-file, enable-lldb-debugging, enable-uiscene-migration

[✓] Android toolchain - develop for Android devices (Android SDK version 37.0.0) [892ms]
    • Android SDK at /home/user/Android/Sdk
    • Emulator version 37.1.11.0 (build_id 15917651) (CL:N/A)
    • Platform android-37.0, build-tools 37.0.0
    • ANDROID_SDK_ROOT = /home/user/Android/Sdk
    • Java binary at: /home/user/android-studio/jbr/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 25.0.2+-15348964-b329.117)
    • All Android licenses accepted.

[✓] Chrome - develop for the web [8ms]
    • CHROME_EXECUTABLE = /usr/bin/chromium-browser

[✓] Linux toolchain - develop for Linux desktop [449ms]
    • clang version 22.1.8 (Fedora 22.1.8-4.fc44)
    • cmake version 4.3.0
    • ninja version 1.13.2
    • pkg-config version 2.5.1
    • OpenGL core renderer: NVIDIA GeForce RTX 5060/PCIe/SSE2
    • OpenGL core version: 4.6.0 NVIDIA 615.71.09
    • OpenGL core shading language version: 4.60 NVIDIA
    • OpenGL ES renderer: NVIDIA GeForce RTX 5060/PCIe/SSE2
    • OpenGL ES version: OpenGL ES 3.2 NVIDIA 615.71.09
    • OpenGL ES shading language version: OpenGL ES GLSL ES 3.20
    • GL_EXT_framebuffer_blit: yes
    • GL_EXT_texture_format_BGRA8888: yes

[✓] Connected device (2 available) [147ms]
    • Linux (desktop) • linux  • linux-x64      • Fedora Linux 44 (KDE Plasma Desktop Edition) 7.2.8-200.fc44.x86_64
    • Chrome (web)    • chrome • web-javascript • Chromium 154.0.8037.57 Built from source for Fedora release 44 (Forty Four)

[✓] Network resources [1,194ms]
    • All expected network resources are available.

• No issues found!

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions