Skip to content

PopupMenuButton asserts when rendering tooltip after navigating back using Cupertino tab layout #167359

Description

@fredecodes

Steps to reproduce

  1. Install Flutter 3.27 with this commit applied (just a one line change): 4503f2f
  2. Run the attached sample app on MacOS or iOS.
  3. Click "Go to Second Page" button
  4. Click the back button at top left, and don't move the cursor
  5. App will assert as soon as the page transition completes if cursor is in position to invoke the PopupMenu's tooltip

Note 1: If you don't apply the aforementioned commit, you will instead crash when attempting to use the PopupMenu after navigation. That issue was fixed by the commit and that bug has been closed.
Note 2: If you set the tooltip for the PopupMenu to empty string, the assert does not occur (see commented out code in example)

Expected results

App doesn't crash/assert

Actual results

App asserts when rendering the tooltip for the PopupMenu. Top of call stack shown here:
_AssertionError._doThrowNew (flutter/bin/cache/pkg/sky_engine/lib/_internal/vm/lib/errors_patch.dart:63)
_AssertionError._throwNew (flutter/bin/cache/pkg/sky_engine/lib/_internal/vm/lib/errors_patch.dart:45)
RenderBox.size (flutter/packages/flutter/lib/src/rendering/box.dart:2251)
RenderFractionalTranslation.applyPaintTransform (flutter/packages/flutter/lib/src/rendering/proxy_box.dart:2974)
RenderObject.getTransformTo (flutter/packages/flutter/lib/src/rendering/object.dart:3520)
RenderBox.localToGlobal (flutter/packages/flutter/lib/src/rendering/box.dart:3082)
TooltipState._buildTooltipOverlay (flutter/packages/flutter/lib/src/material/tooltip.dart:793)
Builder.build (flutter/packages/flutter/lib/src/widgets/basic.dart:7818)

Code sample

Code sample
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      debugShowCheckedModeBanner: false,
      home: const CupertinoHomeScaffold(),
    );
  }
}

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

  void _handleMenuSelection(String value) {
    debugPrint('Menu selection: $value');
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        title: Text('Home Page'),
        leading: PopupMenuButton<String>(
          icon: const Icon(Icons.more_vert),
          //tooltip: '', // empty tooltip prevents the crash
          onSelected: _handleMenuSelection,
          itemBuilder:
              (BuildContext context) => [
                const PopupMenuItem<String>(
                  value: 'settings',
                  child: Text('Settings'),
                ),
                const PopupMenuItem<String>(
                  value: 'about',
                  child: Text('About'),
                ),
              ],
        ),
      ),
      body: Center(
        child: TextButton(
          onPressed:
              () => Navigator.push(
                context,
                MaterialPageRoute(
                  builder: (context) => const SimplePage(title: 'Second Page'),
                ),
              ),
          child: const Text('Go to Second Page'),
        ),
      ),
    );
  }
}

class SimplePage extends StatelessWidget {
  const SimplePage({super.key, required this.title});
  final String title;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text(title)),
      body: const Center(child: Text('Nothing to see here.')),
    );
  }
}

class CupertinoHomeScaffold extends StatefulWidget {
  const CupertinoHomeScaffold({super.key});

  @override
  CupertinoHomeScaffoldState createState() => CupertinoHomeScaffoldState();
}

class CupertinoHomeScaffoldState extends State<CupertinoHomeScaffold> {
  CupertinoTabController controller = CupertinoTabController();

  @override
  Widget build(BuildContext context) {
    return CupertinoTabScaffold(
      controller: controller,
      tabBar: CupertinoTabBar(
        key: const Key(Keys.tabBar),
        items: TabItem.values.map((ti) => _buildItem(ti)).toList(),
        onTap:
            (index) => setState(() {
              controller.index = index;
            }),
      ),
      tabBuilder: (context, index) {
        final tabItem = TabItem.values[index];
        return CupertinoTabView(
          navigatorKey: navigatorKeys[tabItem],
          builder:
              (context) =>
                  tabItem == TabItem.incidents
                      ? const MyHomePage()
                      : const SimplePage(title: 'Responders'),
        );
      },
    );
  }

  BottomNavigationBarItem _buildItem(TabItem tabItem) {
    final itemData = TabItemData.allTabs[tabItem]!;
    final color =
        controller.index == tabItem.index ? Colors.indigo : Colors.grey;
    return BottomNavigationBarItem(
      icon: Icon(itemData.icon, color: color),
      label: itemData.title,
    );
  }
}

enum TabItem { incidents, responders }

class Keys {
  static const String tabBar = 'tabBar';
  static const String incidentsTab = 'incidentsTab';
  static const String respondersTab = 'respondersTab';
}

final Map<TabItem, GlobalKey<NavigatorState>> navigatorKeys = {
  TabItem.incidents: GlobalKey<NavigatorState>(),
  TabItem.responders: GlobalKey<NavigatorState>(),
};

class TabItemData {
  const TabItemData({
    required this.key,
    required this.title,
    required this.icon,
  });

  final String key;
  final String title;
  final IconData icon;

  static const Map<TabItem, TabItemData> allTabs = {
    TabItem.incidents: TabItemData(
      key: Keys.incidentsTab,
      title: 'Incidents',
      icon: Icons.work,
    ),
    TabItem.responders: TabItemData(
      key: Keys.respondersTab,
      title: 'Responders',
      icon: Icons.person,
    ),
  };
}

Screenshots or Video

Screenshots / Video demonstration

[Upload media here]

Logs

Logs
[Paste your logs here]

Flutter Doctor output

Doctor output
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.29.2, on macOS 15.3.2 24D81 darwin-arm64, locale en-US)
[✓] Android toolchain - develop for Android devices (Android SDK version 35.0.1)
[✓] Xcode - develop for iOS and macOS (Xcode 16.3)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2024.3)
[✓] Connected device (4 available)
[✓] Network resources

• No issues found!

Activity

  1. rkishan516 commented on Apr 18, 2025

    @rkishan516
    Contributor

    Acknowledge, I am taking this up.

    Minimal reproducible code :-
    import 'package:flutter/cupertino.dart';
    import 'package:flutter/material.dart';
    
    void main() {
      runApp(const MyApp());
    }
    
    class MyApp extends StatelessWidget {
      const MyApp({super.key});
    
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          title: 'Flutter Demo',
          debugShowCheckedModeBanner: false,
          home: MyHomePage(),
        );
      }
    }
    
    class MyHomePage extends StatelessWidget {
      const MyHomePage({super.key});
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            leading: Center(
              child: Tooltip(message: 'Hello', child: Text('World')),
            ),
          ),
          body: Center(
            child: TextButton(
              onPressed: () => Navigator.push(
                context,
                CupertinoPageRoute(
                  builder: (context) => Scaffold(
                    appBar: AppBar(title: Text('Second Page')),
                    body: const Center(child: Text('Nothing to see here.')),
                  ),
                ),
              ),
              child: const Text('Go to Second Page'),
            ),
          ),
        );
      }
    }
  2. rkishan516 commented on Apr 18, 2025

    @rkishan516
    Contributor

    @MitchellGoodwin Since CupertinoPageTransition.delegatedTransition uses SlideTransition it's harder for tooltip to get global position to show overlay. I think during transition tooltip should not be shown. WDYT ?

  3. fredecodes commented on Apr 18, 2025

    @fredecodes
    Author

    One more thing: As I mentioned, in my sample code if you comment out the line that sets the tooltip to empty string, the assert goes away. HOWEVER, note that a bug still exists here: if you click on the popup menu very quickly while the transition is still happening, you get the hasSize assertion.

  4. maheshj01 commented on Apr 18, 2025

    @maheshj01
    Member

    @fredecodes Thanks for filing the issue and for pointing the commit that broke the PopUpMenuButton. I am able to reproduce this issue on the latest master channel.

    On Navigation back the assetion error was thrown, the red assertion error is displayed for few milliseconds (run the video at 0.5x to see it)

    Screen.Recording.2025-04-18.at.16.42.18.mov
    logs
    Performing hot restart...                                          256ms
    Restarted application in 256ms.
    ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
    The following assertion was thrown building Builder(dirty):
    Assertion failed:
    file:///Users/mahesh/Development/flutter/packages/flutter/lib/src/rendering/box.dart:2251:12
    hasSize
    "RenderBox was not laid out: RenderFractionalTranslation#6ad74 NEEDS-LAYOUT NEEDS-PAINT
    NEEDS-COMPOSITING-BITS-UPDATE"
    
    The relevant error-causing widget was:
      Tooltip Tooltip:file:///Users/mahesh/Development/Triage/sample_app/lib/main.dart:28:32
    
    When the exception was thrown, this was the stack:
    dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 307:3     throw_
    dart-sdk/lib/_internal/js_dev_runtime/private/profile.dart 117:39               assertFailed
    packages/flutter/src/rendering/box.dart 2251:12                                 get size
    packages/flutter/src/rendering/proxy_box.dart 2974:47                           applyPaintTransform
    
    
    Performing hot restart...                                           56ms
    Restarted application in 56ms.
    ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
    The following assertion was thrown building Builder(dirty):
    Assertion failed:
    file:///Users/mahesh/Development/flutter/packages/flutter/lib/src/rendering/box.dart:2251:12
    hasSize
    "RenderBox was not laid out: RenderFractionalTranslation#19559 NEEDS-LAYOUT NEEDS-PAINT
    NEEDS-COMPOSITING-BITS-UPDATE"
    
    The relevant error-causing widget was:
      PopupMenuButton<String>
      PopupMenuButton:file:///Users/mahesh/Development/Triage/sample_app/lib/main.dart:34:18
    
    When the exception was thrown, this was the stack:
    dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 307:3     throw_
    dart-sdk/lib/_internal/js_dev_runtime/private/profile.dart 117:39               assertFailed
    packages/flutter/src/rendering/box.dart 2251:12                                 get size
    packages/flutter/src/rendering/proxy_box.dart 2974:47                           applyPaintTransform
    packages/flutter/src/rendering/object.dart 3520:23                              getTransformTo
    packages/flutter/src/rendering/box.dart 3082:39                                 localToGlobal
    packages/flutter/src/material/tooltip.dart 793:30                               [_buildTooltipOverlay]
    packages/flutter/src/widgets/basic.dart 7818:48                                 build
    packages/flutter/src/widgets/framework.dart 5799:22                             build
    packages/flutter/src/widgets/framework.dart 5733:15                             performRebuild
    packages/flutter/src/widgets/framework.dart 5445:7                              rebuild
    packages/flutter/src/widgets/framework.dart 5805:5                              update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 7034:14                             update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/overlay.dart 2210:21                               update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 5756:16                             performRebuild
    packages/flutter/src/widgets/framework.dart 5892:11                             performRebuild
    packages/flutter/src/widgets/framework.dart 5445:7                              rebuild
    packages/flutter/src/widgets/framework.dart 5917:5                              update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 5756:16                             performRebuild
    packages/flutter/src/widgets/framework.dart 5892:11                             performRebuild
    packages/flutter/src/widgets/framework.dart 5445:7                              rebuild
    packages/flutter/src/widgets/framework.dart 5917:5                              update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 5756:16                             performRebuild
    packages/flutter/src/widgets/framework.dart 5445:7                              rebuild
    packages/flutter/src/widgets/framework.dart 6059:5                              update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 5756:16                             performRebuild
    packages/flutter/src/widgets/framework.dart 5892:11                             performRebuild
    packages/flutter/src/widgets/framework.dart 5445:7                              rebuild
    packages/flutter/src/widgets/framework.dart 5917:5                              update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 7034:14                             update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 5756:16                             performRebuild
    packages/flutter/src/widgets/framework.dart 5445:7                              rebuild
    packages/flutter/src/widgets/framework.dart 6059:5                              update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 7034:14                             update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 5756:16                             performRebuild
    packages/flutter/src/widgets/framework.dart 5445:7                              rebuild
    packages/flutter/src/widgets/framework.dart 5805:5                              update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 7034:14                             update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 5756:16                             performRebuild
    packages/flutter/src/widgets/framework.dart 5892:11                             performRebuild
    packages/flutter/src/widgets/framework.dart 5445:7                              rebuild
    packages/flutter/src/widgets/framework.dart 5917:5                              update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 5756:16                             performRebuild
    packages/flutter/src/widgets/framework.dart 5892:11                             performRebuild
    packages/flutter/src/widgets/framework.dart 5445:7                              rebuild
    packages/flutter/src/widgets/framework.dart 5917:5                              update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 7034:14                             update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 7034:14                             update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 7034:14                             update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 5756:16                             performRebuild
    packages/flutter/src/widgets/framework.dart 5892:11                             performRebuild
    packages/flutter/src/widgets/framework.dart 5445:7                              rebuild
    packages/flutter/src/widgets/framework.dart 5917:5                              update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 5756:16                             performRebuild
    packages/flutter/src/widgets/framework.dart 5892:11                             performRebuild
    packages/flutter/src/widgets/framework.dart 5445:7                              rebuild
    packages/flutter/src/widgets/framework.dart 5917:5                              update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 5756:16                             performRebuild
    packages/flutter/src/widgets/framework.dart 5445:7                              rebuild
    packages/flutter/src/widgets/framework.dart 5805:5                              update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 5756:16                             performRebuild
    packages/flutter/src/widgets/framework.dart 5892:11                             performRebuild
    packages/flutter/src/widgets/framework.dart 5445:7                              rebuild
    packages/flutter/src/widgets/framework.dart 5917:5                              update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 5756:16                             performRebuild
    packages/flutter/src/widgets/framework.dart 5445:7                              rebuild
    packages/flutter/src/widgets/framework.dart 6059:5                              update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 7034:14                             update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 5756:16                             performRebuild
    packages/flutter/src/widgets/framework.dart 5445:7                              rebuild
    packages/flutter/src/widgets/framework.dart 6059:5                              update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 4156:11                             updateChildren
    packages/flutter/src/widgets/framework.dart 7211:17                             update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 5756:16                             performRebuild
    packages/flutter/src/widgets/framework.dart 5445:7                              rebuild
    packages/flutter/src/widgets/framework.dart 5805:5                              update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 5756:16                             performRebuild
    packages/flutter/src/widgets/framework.dart 5445:7                              rebuild
    packages/flutter/src/widgets/framework.dart 6059:5                              update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 5756:16                             performRebuild
    packages/flutter/src/widgets/framework.dart 5445:7                              rebuild
    packages/flutter/src/widgets/framework.dart 6059:5                              update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 5756:16                             performRebuild
    packages/flutter/src/widgets/framework.dart 5445:7                              rebuild
    packages/flutter/src/widgets/framework.dart 5805:5                              update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 7034:14                             update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 7034:14                             update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 5756:16                             performRebuild
    packages/flutter/src/widgets/framework.dart 5445:7                              rebuild
    packages/flutter/src/widgets/framework.dart 6059:5                              update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 7034:14                             update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 5756:16                             performRebuild
    packages/flutter/src/widgets/framework.dart 5445:7                              rebuild
    packages/flutter/src/widgets/framework.dart 5805:5                              update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 7034:14                             update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 7034:14                             update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 5756:16                             performRebuild
    packages/flutter/src/widgets/framework.dart 5445:7                              rebuild
    packages/flutter/src/widgets/framework.dart 6059:5                              update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 5756:16                             performRebuild
    packages/flutter/src/widgets/framework.dart 5892:11                             performRebuild
    packages/flutter/src/widgets/framework.dart 5445:7                              rebuild
    packages/flutter/src/widgets/framework.dart 5917:5                              update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 7034:14                             update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 5756:16                             performRebuild
    packages/flutter/src/widgets/framework.dart 5445:7                              rebuild
    packages/flutter/src/widgets/framework.dart 6059:5                              update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 7034:14                             update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 5756:16                             performRebuild
    packages/flutter/src/widgets/framework.dart 5892:11                             performRebuild
    packages/flutter/src/widgets/framework.dart 5445:7                              rebuild
    packages/flutter/src/widgets/framework.dart 5917:5                              update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 5756:16                             performRebuild
    packages/flutter/src/widgets/framework.dart 5892:11                             performRebuild
    packages/flutter/src/widgets/framework.dart 5445:7                              rebuild
    packages/flutter/src/widgets/framework.dart 5917:5                              update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 7034:14                             update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 7034:14                             update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 5756:16                             performRebuild
    packages/flutter/src/widgets/framework.dart 5892:11                             performRebuild
    packages/flutter/src/widgets/framework.dart 5445:7                              rebuild
    packages/flutter/src/widgets/framework.dart 5917:5                              update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 5756:16                             performRebuild
    packages/flutter/src/widgets/framework.dart 5445:7                              rebuild
    packages/flutter/src/widgets/framework.dart 6059:5                              update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 7034:14                             update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 5756:16                             performRebuild
    packages/flutter/src/widgets/framework.dart 5445:7                              rebuild
    packages/flutter/src/widgets/framework.dart 6059:5                              update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 5756:16                             performRebuild
    packages/flutter/src/widgets/framework.dart 5445:7                              rebuild
    packages/flutter/src/widgets/framework.dart 6059:5                              update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 4156:11                             updateChildren
    packages/flutter/src/widgets/framework.dart 7211:17                             update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 5756:16                             performRebuild
    packages/flutter/src/widgets/framework.dart 5445:7                              rebuild
    packages/flutter/src/widgets/framework.dart 6059:5                              update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 5756:16                             performRebuild
    packages/flutter/src/widgets/framework.dart 5892:11                             performRebuild
    packages/flutter/src/widgets/framework.dart 5445:7                              rebuild
    packages/flutter/src/widgets/framework.dart 5917:5                              update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 5756:16                             performRebuild
    packages/flutter/src/widgets/framework.dart 5892:11                             performRebuild
    packages/flutter/src/widgets/framework.dart 5445:7                              rebuild
    packages/flutter/src/widgets/framework.dart 5917:5                              update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 5756:16                             performRebuild
    packages/flutter/src/widgets/framework.dart 5445:7                              rebuild
    packages/flutter/src/widgets/framework.dart 6059:5                              update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 5756:16                             performRebuild
    packages/flutter/src/widgets/framework.dart 5892:11                             performRebuild
    packages/flutter/src/widgets/framework.dart 5445:7                              rebuild
    packages/flutter/src/widgets/framework.dart 5917:5                              update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 7034:14                             update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 5756:16                             performRebuild
    packages/flutter/src/widgets/framework.dart 5445:7                              rebuild
    packages/flutter/src/widgets/framework.dart 6059:5                              update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 7034:14                             update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 5756:16                             performRebuild
    packages/flutter/src/widgets/framework.dart 5892:11                             performRebuild
    packages/flutter/src/widgets/framework.dart 5445:7                              rebuild
    packages/flutter/src/widgets/framework.dart 5917:5                              update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 5756:16                             performRebuild
    packages/flutter/src/widgets/framework.dart 5892:11                             performRebuild
    packages/flutter/src/widgets/framework.dart 5445:7                              rebuild
    packages/flutter/src/widgets/framework.dart 5917:5                              update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 5756:16                             performRebuild
    packages/flutter/src/widgets/framework.dart 5445:7                              rebuild
    packages/flutter/src/widgets/framework.dart 6059:5                              update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 5756:16                             performRebuild
    packages/flutter/src/widgets/framework.dart 5445:7                              rebuild
    packages/flutter/src/widgets/framework.dart 6059:5                              update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 5756:16                             performRebuild
    packages/flutter/src/widgets/framework.dart 5445:7                              rebuild
    packages/flutter/src/widgets/framework.dart 6059:5                              update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 5756:16                             performRebuild
    packages/flutter/src/widgets/framework.dart 5892:11                             performRebuild
    packages/flutter/src/widgets/framework.dart 5445:7                              rebuild
    packages/flutter/src/widgets/framework.dart 5917:5                              update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 5756:16                             performRebuild
    packages/flutter/src/widgets/framework.dart 5445:7                              rebuild
    packages/flutter/src/widgets/framework.dart 6059:5                              update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 5756:16                             performRebuild
    packages/flutter/src/widgets/framework.dart 5892:11                             performRebuild
    packages/flutter/src/widgets/framework.dart 5445:7                              rebuild
    packages/flutter/src/widgets/framework.dart 5917:5                              update
    packages/flutter/src/widgets/framework.dart 3998:14                             updateChild
    packages/flutter/src/widgets/framework.dart 5756:16                             performRebuild
    packages/flutter/src/widgets/framework.dart 5445:7                              rebuild
    packages/flutter/src/widgets/framework.dart 2704:14                             [_tryRebuild]
    packages/flutter/src/widgets/framework.dart 2762:11                             [_flushDirtyElements]
    packages/flutter/src/widgets/framework.dart 3066:17                             buildScope
    packages/flutter/src/widgets/binding.dart 1229:9                                drawFrame
    packages/flutter/src/rendering/binding.dart 482:5                               [_handlePersistentFrameCallback]
    packages/flutter/src/scheduler/binding.dart 1442:7                              [_invokeFrameCallback]
    packages/flutter/src/scheduler/binding.dart 1355:9                              handleDrawFrame
    packages/flutter/src/scheduler/binding.dart 1208:5                              [_handleDrawFrame]
    lib/_engine/engine/platform_dispatcher.dart 1347:5                              invoke
    lib/_engine/engine/platform_dispatcher.dart 301:5                               invokeOnDrawFrame
    lib/_engine/engine/initialization.dart 190:36                                   <fn>
    dart-sdk/lib/_internal/js_dev_runtime/patch/js_allow_interop_patch.dart 224:27  _callDartFunctionFast1
    
    ════════════════════════════════════════════════════════════════════════════════════════════════════
    
    flutter doctor
    [✓] Flutter (Channel master, 3.32.0-1.0.pre.90, on macOS 15.4 24E248 darwin-arm64, locale
        en-US) [31.4s]
        • Flutter version 3.32.0-1.0.pre.90 on channel master at
          /Users/mahesh/Development/flutter_master
        • Upstream repository https://github.com/flutter/flutter.git
        • Framework revision 29810cd6d1 (3 days ago), 2025-04-16 00:07:50 +0530
        • Engine revision 29810cd6d1
        • Dart version 3.8.0 (build 3.8.0-265.0.dev)
        • DevTools version 2.45.0-dev.0
    
    [✓] Android toolchain - develop for Android devices (Android SDK version 35.0.0) [4.5s]
        • Android SDK at /Users/mahesh/Library/Android/sdk
        • Platform android-35, build-tools 35.0.0
        • ANDROID_HOME = /Users/mahesh/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.5+-12932927-b750.29)
        • All Android licenses accepted.
    
    [✓] Xcode - develop for iOS and macOS (Xcode 16.3) [3.1s]
        • Xcode at /Applications/Xcode.app/Contents/Developer
        • Build 16E140
        • CocoaPods version 1.16.2
    
    [✓] Chrome - develop for the web [148ms]
        • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
    
    [✓] Android Studio (version 2024.3) [147ms]
        • Android Studio at /Applications/Android Studio.app/Contents
        • Flutter plugin can be installed from:
          🔨 https://plugins.jetbrains.com/plugin/9212-flutter
        • Dart plugin can be installed from:
          🔨 https://plugins.jetbrains.com/plugin/6351-dart
        • Java version OpenJDK Runtime Environment (build 21.0.5+-12932927-b750.29)
    
    [✓] IntelliJ IDEA Community Edition (version 2021.2.1) [144ms]
        • IntelliJ at /Applications/IntelliJ IDEA CE.app
        • Flutter plugin version 61.2.4
        • Dart plugin version 212.5080.8
    
    [✓] VS Code (version 1.96.2) [18ms]
        • VS Code at /Applications/Visual Studio Code.app/Contents
        • Flutter extension version 3.102.0
    
    [✓] Connected device (2 available) [6.3s]
        • macOS (desktop) • macos  • darwin-arm64   • macOS 15.4 24E248 darwin-arm64
        • Chrome (web)    • chrome • web-javascript • Google Chrome 131.0.6778.265
    
    [✓] Network resources [365ms]
        • All expected network resources are available.
    
    • No issues found!
    

    @rkishan516 Thanks for the minimal reproduction

  5. added
    frameworkflutter/packages/flutter repository. See also f: labels.
    p: material_uimaterial_ui package in flutter/packages
    has reproducible stepsThe issue has been confirmed reproducible and is ready to work on
    team-designOwned by Design Languages team
    c: regressionIt was better in the past than it is now
    a: error messageError messages from the Flutter framework
    and removed
    in triagePresently being triaged by the triage team
    on Apr 18, 2025
  6. MitchellGoodwin commented on Apr 22, 2025

    @MitchellGoodwin
    Contributor

    [@MitchellGoodwin](https://github.com/MitchellGoodwin) Since CupertinoPageTransition.delegatedTransition uses SlideTransition it's harder for tooltip to get global position to show overlay. I think during transition tooltip should not be shown. WDYT ?

    I'm guessing that it is getting its positioning based on that slide transition and renders in the top layer. Then when the transition is removed, it loses its scope on where it should be until a rebuild happens, causing the assert.

    I think having the tooltip not show during a page transition makes sense. Visually I think it's odd to draw attention to text on the screen while it's in motion. It also looks like the tooltip appears immediately once the transition starts, not once the widget is visibly under the pointer, which is also odd.

  7. added
    P2Important issues not at the top of the work list
    triaged-designTriaged by Design Languages team
    on Apr 23, 2025
  8. added a commit that references this issue on Apr 30, 2025
    fb18bb4
  9. added
    r: fixedIssue is closed as already fixed in a newer version
    on Apr 30, 2025
  10. github-actions commented on May 15, 2025

    @github-actions

    This thread has been automatically locked since there has not been any recent activity after it was closed. If you are still experiencing a similar issue, please open a new bug, including the output of flutter doctor -v and a minimal reproduction of the issue.

  11. locked as resolved and limited conversation to collaborators on May 15, 2025
  12. added a commit that references this issue on Aug 14, 2025
    99d5665
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

    P2Important issues not at the top of the work lista: error messageError messages from the Flutter frameworkc: regressionIt was better in the past than it is nowfound in release: 3.32Found to occur in 3.32frameworkflutter/packages/flutter repository. See also f: labels.has reproducible stepsThe issue has been confirmed reproducible and is ready to work onp: material_uimaterial_ui package in flutter/packagesr: fixedIssue is closed as already fixed in a newer versionteam-designOwned by Design Languages teamtriaged-designTriaged by Design Languages team

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions