Repository navigation
Open
Labels
P2Important issues not at the top of the work listImportant issues not at the top of the work listc: crashStack traces logged to the consoleStack traces logged to the consolef: routesNavigator, Router, and related APIs.Navigator, Router, and related APIs.f: selectionSelectableRegion, SelectionArea, SelectionContainer, Selectable, and related APIsSelectableRegion, SelectionArea, SelectionContainer, Selectable, and related APIsfound in release: 3.7Found to occur in 3.7Found to occur in 3.7found in release: 3.8Found to occur in 3.8Found to occur in 3.8frameworkflutter/packages/flutter repository. See also f: labels.flutter/packages/flutter repository. See also f: labels.has reproducible stepsThe issue has been confirmed reproducible and is ready to work onThe issue has been confirmed reproducible and is ready to work onteam-frameworkOwned by Framework teamOwned by Framework teamtriaged-frameworkTriaged by Framework teamTriaged by Framework team
Description
Steps to Reproduce
- Create a new Flutter project.
- Replace
main.dartwith the following. - Run in Chrome.
Expected results: "foreground" text is visible, no exceptions
Actual results: "foreground" text is visible, an exception in console:
======== Exception caught by scheduler library =====================================================
The following assertion was thrown during a scheduler callback:
Assertion failed: file:///home/alexey/snap/flutter/common/flutter/packages/flutter/lib/src/rendering/paragraph.dart:1001:12
!debugNeedsLayout
is not true
When the exception was thrown, this was the stack:
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 266:49 throw_
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 29:3 assertFailed
packages/flutter/src/rendering/paragraph.dart 1001:13 getBoxesForSelection
packages/flutter/src/rendering/paragraph.dart 1728:45 get [_rect]
packages/flutter/src/rendering/paragraph.dart 1702:44 getTransformToParagraph
packages/flutter/src/rendering/paragraph.dart 1707:12 getTransformTo
packages/flutter/src/widgets/selectable_region.dart 1599:8 [_compareScreenOrder]
dart-sdk/lib/internal/sort.dart 69:51 _insertionSort
dart-sdk/lib/internal/sort.dart 58:7 _doSort
dart-sdk/lib/internal/sort.dart 33:5 sort
dart-sdk/lib/_internal/js_dev_runtime/private/js_array.dart 460:12 sort]
packages/flutter/src/widgets/selectable_region.dart 1506:70 <fn>
packages/flutter/src/widgets/selectable_region.dart 1506:75 [_flushAdditions]
packages/flutter/src/widgets/selectable_region.dart 1500:7 [_updateSelectables]
packages/flutter/src/widgets/selectable_region.dart 1492:9 <fn>
packages/flutter/src/scheduler/binding.dart 1289:15 [_invokeFrameCallback]
packages/flutter/src/scheduler/binding.dart 1227:9 handleDrawFrame
packages/flutter/src/scheduler/binding.dart 942:7 <fn>
dart-sdk/lib/_internal/js_dev_runtime/private/isolate_helper.dart 48:19 internalCallback
====================================================================================================
The exception is thrown by the background page of Navigator. If one of the pages is deleted, everything works fine. So this is not a problem to the foreground page but it clutters the console and may prevent background pages from some desired background activity.
main.dart
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: OneSelectableRegionPage(),
);
}
}
final _focusNode = FocusNode();
class OneSelectableRegionPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return SelectableRegion(
focusNode: _focusNode,
selectionControls: materialTextSelectionControls,
child: Navigator(
pages: [
MaterialPage(
child: Scaffold(body: Text('background')),
),
MaterialPage(
child: Scaffold(body: Text('foreground')),
),
],
onPopPage: (_, __) => false,
),
);
}
}flutter doctor -v
[✓] Flutter (Channel stable, 3.7.1, on Ubuntu 20.04.5 LTS 5.14.0-1056-oem, locale en_US.UTF-8)
• Flutter version 3.7.1 on channel stable at /home/alexey/snap/flutter/common/flutter
• Upstream repository https://github.com/flutter/flutter.git
• Framework revision 7048ed95a5 (9 hours ago), 2023-02-01 09:07:31 -0800
• Engine revision 800594f1f4
• Dart version 2.19.1
• DevTools version 2.20.1
[!] Android toolchain - develop for Android devices (Android SDK version 33.0.0)
• Android SDK at /home/alexey/Android/Sdk
✗ cmdline-tools component is missing
Run `path/to/sdkmanager --install "cmdline-tools;latest"`
See https://developer.android.com/studio/command-line for more details.
✗ Android license status unknown.
Run `flutter doctor --android-licenses` to accept the SDK licenses.
See https://flutter.dev/docs/get-started/install/linux#android-setup for more details.
[✓] Chrome - develop for the web
• Chrome at google-chrome
[✓] Linux toolchain - develop for Linux desktop
• clang version 10.0.0-4ubuntu1
• cmake version 3.16.3
• ninja version 1.10.0
• pkg-config version 0.29.1
[✓] Android Studio (version 2021.2)
• Android Studio at /home/alexey/bin/android-studio
• Flutter plugin version 71.0.2
• Dart plugin version 212.5744
• Java version OpenJDK Runtime Environment (build 11.0.12+0-b1504.28-7817840)
[✓] VS Code (version 1.74.3)
• VS Code at /usr/share/code
• Flutter extension can be installed from:
🔨 https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter
[✓] Connected device (2 available)
• Linux (desktop) • linux • linux-x64 • Ubuntu 20.04.5 LTS 5.14.0-1056-oem
• Chrome (web) • chrome • web-javascript • Google Chrome 109.0.5414.119
[✓] HTTP Host Availability
• All required HTTP hosts are available
! Doctor found issues in 1 category.
Reacted by Micha Sengotta, rockstarr-programmerr, awsms and Hannes Hultergård
Metadata
Metadata
Assignees
Labels
P2Important issues not at the top of the work listImportant issues not at the top of the work listc: crashStack traces logged to the consoleStack traces logged to the consolef: routesNavigator, Router, and related APIs.Navigator, Router, and related APIs.f: selectionSelectableRegion, SelectionArea, SelectionContainer, Selectable, and related APIsSelectableRegion, SelectionArea, SelectionContainer, Selectable, and related APIsfound in release: 3.7Found to occur in 3.7Found to occur in 3.7found in release: 3.8Found to occur in 3.8Found to occur in 3.8frameworkflutter/packages/flutter repository. See also f: labels.flutter/packages/flutter repository. See also f: labels.has reproducible stepsThe issue has been confirmed reproducible and is ready to work onThe issue has been confirmed reproducible and is ready to work onteam-frameworkOwned by Framework teamOwned by Framework teamtriaged-frameworkTriaged by Framework teamTriaged by Framework team
Type
Projects
- StatusShow more project fieldsIn progress
Activity
alexeyinkin commentedon Feb 2, 2023
huycozy commentedon Feb 2, 2023
@alexeyinkin Thanks for the report. I also see the exception on Web and other platforms (Android, iOS, MacOS). Verified on the latest stable and master channels.
flutter doctor -v (stable and master)
[✓] Flutter (Channel stable, 3.7.1, on macOS 13.0.1 22A400 darwin-x64, locale en-VN) • Flutter version 3.7.1 on channel stable at /Users/huynq/Documents/GitHub/flutter • Upstream repository https://github.com/flutter/flutter.git • Framework revision 7048ed95a5 (11 hours ago), 2023-02-01 09:07:31 -0800 • Engine revision 800594f1f4 • Dart version 2.19.1 • DevTools version 2.20.1 [✓] Android toolchain - develop for Android devices (Android SDK version 31.0.0) • Android SDK at /Users/huynq/Library/Android/sdk • Platform android-33, build-tools 31.0.0 • ANDROID_HOME = /Users/huynq/Library/Android/sdk • Java binary at: /Applications/Android Studio Dolphin 2021.3.1.app/Contents/jre/Contents/Home/bin/java • Java version OpenJDK Runtime Environment (build 11.0.13+0-b1751.21-8125866) • All Android licenses accepted. [✓] Xcode - develop for iOS and macOS (Xcode 14.1) • Xcode at /Applications/Xcode.app/Contents/Developer • Build 14B47b • CocoaPods version 1.11.3 [✓] Chrome - develop for the web • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome [✓] Android Studio (version 2021.3) • Android Studio at /Applications/Android Studio Dolphin 2021.3.1.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 11.0.13+0-b1751.21-8125866) [!] Android Studio (version 2022.1) • 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 ✗ Unable to find bundled Java version. • Try updating or re-installing Android Studio. [✓] IntelliJ IDEA Community Edition (version 2022.1.1) • IntelliJ at /Users/huynq/Library/Application Support/JetBrains/Toolbox/apps/IDEA-C/ch-0/221.5591.52/IntelliJ IDEA CE.app • 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 [✓] VS Code (version 1.74.3) • VS Code at /Applications/Visual Studio Code.app/Contents • Flutter extension version 3.58.0 [✓] Connected device (4 available) • RMX2001 (mobile) • EUYTFEUSQSRGDA6D • android-arm64 • Android 11 (API 30) • iPhone (mobile) • d9a94afe2b649fef56ba0bfeb052f0f2a7dae95e • ios • iOS 15.7.2 19H218 • macOS (desktop) • macos • darwin-x64 • macOS 13.0.1 22A400 darwin-x64 • Chrome (web) • chrome • web-javascript • Google Chrome 109.0.5414.119 [✓] HTTP Host Availability • All required HTTP hosts are available ! Doctor found issues in 1 category.asinyagin commentedon Oct 24, 2023
I guess I have the same problem. I want to add that my tests fail because of this error. I run my tests on linux.
Here's my code:
main.dart
integration_test/my_test.dart
Output from the test
rmahmadkhan commentedon Nov 15, 2023
any update on this? i get this a lot on hot reloading on my Flutter web app.
v3.13.9ipapp commentedon Feb 16, 2024
I have an app with a device list page, from which I open the device details page. I am using go_router, which initializes the background page (devices list page) before the subpage is rendered (details of a specific device).
If the devices list page contains even a single const
Textwidget, and I am refreshing the subpage by hot reload or F5, thedebugNeedsLayoutassert fails.A workaround for me was to put the following code into the devices list page build procedure:
This is not a solution, just a workaround, but saved me time and log space :-)
maxgmer commentedon Jul 15, 2026
Fix this please!
The solution by @ipapp may work for some cases, but definitely not others, since the type change forces full widget remounting for the previous page, when it becomes current, which is a heavy redundant work in case of some applications.
test: canary for a selection area over a page never laid out (flutter…