flutter / flutter

Flutter makes it easy and fast to build beautiful apps for mobile and beyond
https://flutter.dev
BSD 3-Clause "New" or "Revised" License
166.29k stars 27.52k forks source link

Scrollbar Exception caught by scheduler library #77609

Open aliyazdi75 opened 3 years ago

aliyazdi75 commented 3 years ago

This issue is related to declarative navigation 2 and Navigator.pages. If I request a page by URL and that page has another page underneath which contains Scrollbar this error happens:

======== Exception caught by scheduler library =====================================================
The following TypeErrorImpl was thrown during a scheduler callback:
Unexpected null value.

When the exception was thrown, this was the stack: 
dart:sdk_internal 5041:11                                          throw_
dart:sdk_internal 5366:30                                          nullCheck
../packages/flutter/src/widgets/scroll_metrics.dart.lib.js 98:19   get maxScrollExtent
../packages/flutter/src/widgets/scrollbar.dart.lib.js 1304:34      [_handleScrollNotification]
../packages/flutter/src/widgets/widget_span.dart.lib.js 42486:59   [_dispatch]
...

My project is open source: This is pages: https://github.com/aliyazdi75/gallery/blob/main/lib/presentation/screens/gallery/router.dart#L38 This is Scrollbar: https://github.com/aliyazdi75/gallery/blob/main/lib/presentation/screens/album/view/media/view/media.dart#L103

If I open the application by this URL: /gallery/album/album2?view=photo8 navigator.pages contains two pages: AlbumPage which has the Scrollbar and MediaFullscreenPage which is the front page.

Summary: If we open the application in a declarative way by the browser and it has a page underneath that contains Scrollbar this problem triggers.

TahaTesser commented 3 years ago

Hi @aliyazdi75 To better address the issue, Can you please provide your flutter doctor -v and flutter run --verbose logs, and a minimal complete reproducible code sample? instead of a project Thank you

aliyazdi75 commented 3 years ago

Hi @TahaTesser Implementing Navigation 2 it's not minimal at all :smile: , but I did my best to reproduce this issue. 1- git clone git@github.com:5be066aa964b799fca66eebabec88c5f.git in a null-safety flutter project. Hosted here and scrollbar is here 2- flutter run -d chrome --verbose 3- Copy and paste to the end of the base and go to this URL: /book/0 4- Exception:

======== Exception caught by scheduler library =====================================================
The following TypeErrorImpl was thrown during a scheduler callback:
Unexpected null value.

When the exception was thrown, this was the stack: 
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 236:49      throw_
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 518:63  nullCheck
packages/flutter/src/widgets/scroll_metrics.dart 150:49                           get maxScrollExtent
packages/flutter/src/widgets/scrollbar.dart 1099:16                               [_handleScrollNotification]
packages/flutter/src/widgets/notification_listener.dart 206:27                    [_dispatch]
...
====================================================================================================
--verbose output

``` [ +74 ms] executing: uname -m [ +32 ms] Exit code 0 from: uname -m [ ] x86_64 [ +17 ms] executing: [/home/aliyazdi75/snap/flutter/common/flutter/] git -c log.showSignature=false log -n 1 --pretty=format:%H [ +6 ms] Exit code 0 from: git -c log.showSignature=false log -n 1 --pretty=format:%H [ ] 05ce6ce51153dd92d68092091a465170584d842f [ ] executing: [/home/aliyazdi75/snap/flutter/common/flutter/] git tag --points-at 05ce6ce51153dd92d68092091a465170584d842f [ +13 ms] Exit code 0 from: git tag --points-at 05ce6ce51153dd92d68092091a465170584d842f [ +1 ms] executing: [/home/aliyazdi75/snap/flutter/common/flutter/] git describe --match *.*.* --long --tags 05ce6ce51153dd92d68092091a465170584d842f [ +32 ms] Exit code 0 from: git describe --match *.*.* --long --tags 05ce6ce51153dd92d68092091a465170584d842f [ ] 2.1.0-10.0.pre-86-g05ce6ce511 [ +47 ms] executing: [/home/aliyazdi75/snap/flutter/common/flutter/] git rev-parse --abbrev-ref --symbolic @{u} [ +5 ms] Exit code 0 from: git rev-parse --abbrev-ref --symbolic @{u} [ ] origin/master [ ] executing: [/home/aliyazdi75/snap/flutter/common/flutter/] git ls-remote --get-url origin [ +5 ms] Exit code 0 from: git ls-remote --get-url origin [ ] https://github.com/flutter/flutter.git [ +49 ms] executing: [/home/aliyazdi75/snap/flutter/common/flutter/] git rev-parse --abbrev-ref HEAD [ +6 ms] Exit code 0 from: git rev-parse --abbrev-ref HEAD [ ] master [ +63 ms] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update. [ ] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update. [ ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update. [ ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update. [ +2 ms] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update. [ ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update. [ ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update. [ ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update. [ ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update. [ ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update. [ ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update. [ +73 ms] executing: /home/aliyazdi75/Android/Sdk/platform-tools/adb devices -l [ +48 ms] List of devices attached [ +6 ms] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update. [ ] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update. [ ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update. [ +3 ms] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update. [ ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update. [ ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update. [ ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update. [ ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update. [ ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update. [ ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update. [ +76 ms] Skipping pub get: version match. [ +133 ms] Generating /home/aliyazdi75/Documents/AndroidStudioProjects/flutter_app/android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java [ +185 ms] Launching lib/main.dart on Chrome in debug mode... [ +140 ms] Updating assets [ +120 ms] Waiting for connection from debug service on Chrome... [ +90 ms] <- reset [ +6 ms] /home/aliyazdi75/snap/flutter/common/flutter/bin/cache/dart-sdk/bin/dart --disable-dart-dev /home/aliyazdi75/snap/flutter/common/flutter/bin/cache/artifacts/engine/linux-x64/frontend_server.dart.snapshot --sdk-root /home/aliyazdi75/snap/flutter/common/flutter/bin/cache/flutter_web_sdk/ --incremental --target=dartdevc --debugger-module-names --experimental-emit-debug-metadata -DFLUTTER_WEB_AUTO_DETECT=true --output-dill /tmp/flutter_tools.DRTAMU/flutter_tool.GBYQWZ/app.dill --libraries-spec file:///home/aliyazdi75/snap/flutter/common/flutter/bin/cache/flutter_web_sdk/libraries.json --packages /home/aliyazdi75/Documents/AndroidStudioProjects/flutter_app/.dart_tool/package_config.json -Ddart.vm.profile=false -Ddart.vm.product=false --enable-asserts --track-widget-creation --filesystem-root /tmp/flutter_tools.DRTAMU/flutter_tools.NSVIHJ --filesystem-scheme org-dartlang-app --initialize-from-dill build/b1b715402d823b7fd5c2b68d2edcb2ce.cache.dill.track.dill --platform file:///home/aliyazdi75/snap/flutter/common/flutter/bin/cache/flutter_web_sdk/kernel/flutter_ddc_sdk_sound.dill --sound-null-safety [ +28 ms] <- compile org-dartlang-app:/web_entrypoint.dart [+24839 ms] Waiting for connection from debug service on Chrome... (completed in 24.9s) [ +1 ms] Synced 29.1MB. [ +20 ms] <- accept [ ] Caching compiled dill [ +293 ms] Using Google Chrome 89.0.4389.82 [ +435 ms] [CHROME]: [ ] [CHROME]:DevTools listening on ws://127.0.0.1:44903/devtools/browser/8940119f-4b8a-4863-86e1-fcd79cc4f87e [ +641 ms] DwdsInjector: Received request for entrypoint at http://localhost:45071/main_module.bootstrap.js [ +38 ms] MetadataProvider: Loading debug metadata... [ +52 ms] MetadataProvider: Loaded debug metadata (sound null safety) [ +13 ms] DwdsInjector: Injected debugging metadata for entrypoint at http://localhost:45071/main_module.bootstrap.js [+3475 ms] ChromeProxyService: Initializing expression compiler for main_module.bootstrap.js with sound null safety: true [ +791 ms] DevHandler: Debug service listening on ws://127.0.0.1:45815/2Hwa9akqGmo=/ws [ +12 ms] Debug service listening on ws://127.0.0.1:45815/2Hwa9akqGmo=/ws [ ] πŸ’ͺ Running with sound null safety πŸ’ͺ [ +5 ms] πŸ”₯ To hot restart changes while running, press "r" or "R". [ ] For a more detailed help message, press "h". To quit, press "q". [+97428 ms] DwdsInjector: Received request for entrypoint at http://localhost:45071/main_module.bootstrap.js [ ] MetadataProvider: Loading debug metadata... [ +9 ms] MetadataProvider: Loaded debug metadata (sound null safety) [ +5 ms] DwdsInjector: Injected debugging metadata for entrypoint at http://localhost:45071/main_module.bootstrap.js [+2267 ms] ChromeProxyService: Initializing expression compiler for main_module.bootstrap.js with sound null safety: true [+3174 ms] ══║ EXCEPTION CAUGHT BY SCHEDULER LIBRARY β•žβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β• [ +23 ms] The following TypeErrorImpl was thrown during a scheduler callback: [ ] Unexpected null value. [ ] When the exception was thrown, this was the stack: [ ] dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 236:49 throw_ [ ] dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 518:63 nullCheck [ ] packages/flutter/src/widgets/scroll_metrics.dart 150:49 get maxScrollExtent [ ] packages/flutter/src/widgets/scrollbar.dart 1099:16 [_handleScrollNotification] [ ] packages/flutter/src/widgets/notification_listener.dart 206:27 [_dispatch] [ +19 ms] packages/flutter/src/widgets/notification_listener.dart 122:19 visitAncestor [ +4 ms] packages/flutter/src/widgets/scroll_notification.dart 31:18 visitAncestor [ ] packages/flutter/src/widgets/framework.dart 4037:39 visitAncestorElements [ ] packages/flutter/src/widgets/notification_listener.dart 138:13 dispatch [ ] packages/flutter/src/widgets/scroll_activity.dart 94:90 dispatchScrollUpdateNotification [ ] packages/flutter/src/widgets/scroll_position.dart 870:5 didUpdateScrollPositionBy [ ] packages/flutter/src/widgets/scrollbar.dart 908:25 [ +9 ms] packages/flutter/src/scheduler/binding.dart 1144:15 [_invokeFrameCallback] [ +5 ms] packages/flutter/src/scheduler/binding.dart 1090:9 handleDrawFrame [ ] packages/flutter/src/scheduler/binding.dart 865:7 [ ] dart-sdk/lib/_internal/js_dev_runtime/private/isolate_helper.dart 48:19 internalCallback [ ] ════════════════════════════════════════════════════════════════════════════════════════════════════ ```

flutter doctor -v output

``` [βœ“] Flutter (Channel master, 2.1.0-11.0.pre.86, on Linux, locale en_US.UTF-8) β€’ Flutter version 2.1.0-11.0.pre.86 at /home/aliyazdi75/snap/flutter/common/flutter β€’ Framework revision 05ce6ce511 (6 days ago), 2021-03-03 11:04:02 -0800 β€’ Engine revision cd0e54348b β€’ Dart version 2.13.0 (build 2.13.0-93.0.dev) [βœ“] Android toolchain - develop for Android devices (Android SDK version 30.0.3) β€’ Android SDK at /home/aliyazdi75/Android/Sdk β€’ Platform android-30, build-tools 30.0.3 β€’ Java binary at: /home/aliyazdi75/Application/android-studio/jre/bin/java β€’ Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593) β€’ All Android licenses accepted. [βœ“] Chrome - develop for the web β€’ Chrome at google-chrome [βœ“] Linux toolchain - develop for Linux desktop β€’ clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final) β€’ cmake version 3.10.2 β€’ ninja version 1.8.2 β€’ pkg-config version 0.29.1 [βœ“] Android Studio (version 4.1) β€’ Android Studio at /home/aliyazdi75/Application/android-studio β€’ Flutter plugin version 54.0.1 β€’ Dart plugin version 201.9335 β€’ Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593) [βœ“] Connected device (2 available) β€’ Linux (desktop) β€’ linux β€’ linux-x64 β€’ Linux β€’ Chrome (web) β€’ chrome β€’ web-javascript β€’ Google Chrome 89.0.4389.82 β€’ No issues found! ```

TahaTesser commented 3 years ago

Hi @aliyazdi75 Thanks for the code sample, I can reproduce the issue. No exception without scrollbar

code sample ```dart import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; void main() { runApp(BooksApp()); } class Book { final String title; final String author; Book(this.title, this.author); } class BooksApp extends StatefulWidget { @override State createState() => _BooksAppState(); } class _BooksAppState extends State { BookRouterDelegate _routerDelegate = BookRouterDelegate(); BookRouteInformationParser _routeInformationParser = BookRouteInformationParser(); @override Widget build(BuildContext context) { return MaterialApp.router( title: 'Books App', routerDelegate: _routerDelegate, routeInformationParser: _routeInformationParser, ); } } class BookRouteInformationParser extends RouteInformationParser { @override Future parseRouteInformation( RouteInformation routeInformation) { final uri = Uri.parse(routeInformation.location!); // Handle '/' if (uri.pathSegments.length == 0) { return SynchronousFuture(BookRoutePath.home()); } // Handle '/book/:id' if (uri.pathSegments.length == 2) { if (uri.pathSegments[0] != 'book') return SynchronousFuture(BookRoutePath.unknown()); var remaining = uri.pathSegments[1]; var id = int.tryParse(remaining); if (id == null) return SynchronousFuture(BookRoutePath.unknown()); return SynchronousFuture(BookRoutePath.details(id)); } // Handle unknown routes return SynchronousFuture(BookRoutePath.unknown()); } @override RouteInformation? restoreRouteInformation(BookRoutePath path) { if (path.isUnknown) { return RouteInformation(location: '/404'); } if (path.isHomePage) { return RouteInformation(location: '/'); } if (path.isDetailsPage) { return RouteInformation(location: '/book/${path.id}'); } return null; } } class BookRouterDelegate extends RouterDelegate with ChangeNotifier, PopNavigatorRouterDelegateMixin { final GlobalKey navigatorKey; Book? _selectedBook; bool show404 = false; List books = [ Book('Stranger in a Strange Land', 'Robert A. Heinlein'), Book('Foundation', 'Isaac Asimov'), Book('Fahrenheit 451', 'Ray Bradbury'), ]; BookRouterDelegate() : navigatorKey = GlobalKey(); BookRoutePath get currentConfiguration { if (show404) { return BookRoutePath.unknown(); } return _selectedBook == null ? BookRoutePath.home() : BookRoutePath.details(books.indexOf(_selectedBook!)); } @override Widget build(BuildContext context) { return Navigator( key: navigatorKey, pages: [ MaterialPage( key: ValueKey('BooksListPage'), child: BooksListScreen( books: books, onTapped: _handleBookTapped, ), ), if (show404) MaterialPage(key: ValueKey('UnknownPage'), child: UnknownScreen()) else if (_selectedBook != null) BookDetailsPage(book: _selectedBook!) ], onPopPage: (route, result) { if (!route.didPop(result)) { return false; } // Update the list of pages by setting _selectedBook to null _selectedBook = null; show404 = false; notifyListeners(); return true; }, ); } @override Future setNewRoutePath(BookRoutePath path) { if (path.isUnknown) { _selectedBook = null; show404 = true; return SynchronousFuture(null); } if (path.isDetailsPage) { if (path.id! < 0 || path.id! > books.length - 1) { show404 = true; return SynchronousFuture(null); } _selectedBook = books[path.id!]; } else { _selectedBook = null; } show404 = false; return SynchronousFuture(null); } void _handleBookTapped(Book book) { _selectedBook = book; notifyListeners(); } } class BookDetailsPage extends Page { final Book book; BookDetailsPage({ required this.book, }) : super(key: ValueKey(book)); Route createRoute(BuildContext context) { return MaterialPageRoute( settings: this, builder: (BuildContext context) { return BookDetailsScreen(book: book); }, ); } } class BookRoutePath { final int? id; final bool isUnknown; BookRoutePath.home() : id = null, isUnknown = false; BookRoutePath.details(this.id) : isUnknown = false; BookRoutePath.unknown() : id = null, isUnknown = true; bool get isHomePage => id == null; bool get isDetailsPage => id != null; } class BooksListScreen extends StatefulWidget { final List books; final ValueChanged onTapped; BooksListScreen({ required this.books, required this.onTapped, }); @override _BooksListScreenState createState() => _BooksListScreenState(); } class _BooksListScreenState extends State { late ScrollController _scrollController; @override void initState() { super.initState(); _scrollController = ScrollController(); } @override void dispose() { _scrollController.dispose(); super.dispose(); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(), body: Scrollbar( controller: _scrollController, showTrackOnHover: true, isAlwaysShown: true, child: ListView( controller: _scrollController, children: widget.books .map((book) => ListTile( title: Text(book.title), subtitle: Text(book.author), onTap: () => widget.onTapped(book), )) .toList(), ), ), ); } } class BookDetailsScreen extends StatelessWidget { final Book book; BookDetailsScreen({ required this.book, }); @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(), body: Padding( padding: const EdgeInsets.all(8.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text(book.title, style: Theme.of(context).textTheme.headline6), Text(book.author, style: Theme.of(context).textTheme.subtitle1), ], ), ), ); } } class UnknownScreen extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(), body: Center( child: Text('404!'), ), ); } } ```
logs ```bash [ +35 ms] Running "flutter pub get" in stable_flutter... (completed in 1,082ms) [ +107 ms] Generating /home/taha/AndroidStudioProjects/stable_flutter/android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegi strant.java [ +175 ms] Launching lib/main.dart on Chrome in debug mode... [ +74 ms] Updating assets [ +67 ms] Waiting for connection from debug service on Chrome... [ +80 ms] <- reset [ +8 ms] /home/taha/Code/flutter_stable/bin/cache/dart-sdk/bin/dart --disable-dart-dev /home/taha/Code/flutter_stable/bin/cache/artifacts/engine/linux-x64/frontend_server.dart.snapshot --sdk-root /home/taha/Code/flutter_stable/bin/cache/flutter_web_sdk/ --incremental --target=dartdevc --debugger-module-names --experimental-emit-debug-metadata -DFLUTTER_WEB_AUTO_DETECT=true --output-dill /tmp/flutter_tools.QTXJPZ/flutter_tool.SWLGNV/app.dill --libraries-spec file:///home/taha/Code/flutter_stable/bin/cache/flutter_web_sdk/libraries.json --packages /home/taha/AndroidStudioProjects/stable_flutter/.dart_tool/package_config.json -Ddart.vm.profile=false -Ddart.vm.product=false --enable-asserts --track-widget-creation --filesystem-root /tmp/flutter_tools.QTXJPZ/flutter_tools.GSBIYG --filesystem-scheme org-dartlang-app --initialize-from-dill build/b1b715402d823b7fd5c2b68d2edcb2ce.cache.dill.track.dill --platform file:///home/taha/Code/flutter_stable/bin/cache/flutter_web_sdk/kernel/flutter_ddc_sdk_sound.dill --sound-null-safety [ +8 ms] <- compile org-dartlang-app:/web_entrypoint.dart [+12025 ms] Waiting for connection from debug service on Chrome... (completed in 12.1s) [ ] Synced 28.9MB. [ ] <- accept [ ] Caching compiled dill [ +133 ms] Using Chromium 89.0.4389.82 snap [ +141 ms] [CHROME]:Gtk-Message: 13:18:20.250: Failed to load module "appmenu-gtk-module" [ +58 ms] [CHROME]: [ ] [CHROME]:DevTools listening on ws://127.0.0.1:43383/devtools/browser/08e79b77-a62a-45c2-9156-6c02160cf4f7 [ +244 ms] DwdsInjector: Received request for entrypoint at http://localhost:42897/main_module.bootstrap.js [ +3 ms] MetadataProvider: Loading debug metadata... [ +12 ms] MetadataProvider: Loaded debug metadata [ +9 ms] DwdsInjector: Injected debugging metadata for entrypoint at http://localhost:42897/main_module.bootstrap.js [+1677 ms] DevHandler: Debug service listening on ws://127.0.0.1:36585/NyCQP1URENI=/ws [ +6 ms] Debug service listening on ws://127.0.0.1:36585/NyCQP1URENI=/ws [ ] πŸ’ͺ Running with sound null safety πŸ’ͺ [ +1 ms] πŸ”₯ To hot restart changes while running, press "r" or "R". [ ] For a more detailed help message, press "h". To quit, press "q". [+27325 ms] DwdsInjector: Received request for entrypoint at http://localhost:42897/main_module.bootstrap.js [ ] MetadataProvider: Loading debug metadata... [ +4 ms] MetadataProvider: Loaded debug metadata [ +1 ms] DwdsInjector: Injected debugging metadata for entrypoint at http://localhost:42897/main_module.bootstrap.js [+3312 ms] ══║ EXCEPTION CAUGHT BY SCHEDULER LIBRARY β•žβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β• [ +2 ms] The following TypeErrorImpl was thrown during a scheduler callback: [ ] Unexpected null value. [ ] When the exception was thrown, this was the stack: [ ] dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 236:49 throw_ [ ] dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 518:63 nullCheck [ ] packages/flutter/src/widgets/scroll_metrics.dart 150:49 get maxScrollExtent [ ] packages/flutter/src/widgets/scrollbar.dart 1053:16 [_handleScrollNotification] [ ] packages/flutter/src/widgets/notification_listener.dart 206:27 [_dispatch] [ ] packages/flutter/src/widgets/notification_listener.dart 122:19 visitAncestor [ ] packages/flutter/src/widgets/scroll_notification.dart 31:18 visitAncestor [ ] packages/flutter/src/widgets/framework.dart 3966:39 visitAncestorElements [ ] packages/flutter/src/widgets/notification_listener.dart 138:13 dispatch [ ] packages/flutter/src/widgets/scroll_activity.dart 94:90 dispatchScrollUpdateNotification [ ] packages/flutter/src/widgets/scroll_position.dart 870:5 didUpdateScrollPositionBy [ ] packages/flutter/src/widgets/scrollbar.dart 862:25 [ ] packages/flutter/src/scheduler/binding.dart 1144:15 [_invokeFrameCallback] [ ] packages/flutter/src/scheduler/binding.dart 1090:9 handleDrawFrame [ ] packages/flutter/src/scheduler/binding.dart 865:7 [ ] dart-sdk/lib/_internal/js_dev_runtime/private/isolate_helper.dart 48:19 internalCallback [ ] ════════════════════════════════════════════════════════════════════════════════════════════════════ ```
flutter doctor -v ```bash [βœ“] Flutter (Channel stable, 2.0.1, on Linux, locale en_CA.UTF-8) β€’ Flutter version 2.0.1 at /home/taha/Code/flutter_stable β€’ Framework revision c5a4b4029c (6 days ago), 2021-03-04 09:47:48 -0800 β€’ Engine revision 40441def69 β€’ Dart version 2.12.0 [βœ“] Android toolchain - develop for Android devices (Android SDK version 30.0.3) β€’ Android SDK at /home/taha/Code/SDK β€’ Platform android-30, build-tools 30.0.3 β€’ ANDROID_HOME = /home/taha/Code/SDK β€’ Java binary at: /home/taha/Code/android-studio/jre/bin/java β€’ Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593) β€’ All Android licenses accepted. [βœ“] Chrome - develop for the web β€’ CHROME_EXECUTABLE = /snap/bin/chromium [βœ“] Linux toolchain - develop for Linux desktop β€’ Ubuntu clang version 11.0.0-2 β€’ cmake version 3.16.3 β€’ ninja version 1.10.0 β€’ pkg-config version 0.29.2 [!] Android Studio (not installed) β€’ Android Studio not found; download from https://developer.android.com/studio/index.html (or visit https://flutter.dev/docs/get-started/install/linux#android-setup for detailed instructions). [βœ“] VS Code (version 1.54.1) β€’ VS Code at /usr/share/code β€’ Flutter extension version 3.20.0 [βœ“] Connected device (2 available) β€’ Linux (desktop) β€’ linux β€’ linux-x64 β€’ Linux β€’ Chrome (web) β€’ chrome β€’ web-javascript β€’ Chromium 89.0.4389.82 snap ! Doctor found issues in 1 category. ``` ```bash [βœ“] Flutter (Channel master, 2.1.0-11.0.pre.179, on Linux, locale en_CA.UTF-8) β€’ Flutter version 2.1.0-11.0.pre.179 at /home/taha/Code/flutter_master β€’ Framework revision 07e04484ea (4 hours ago), 2021-03-09 20:10:05 -0800 β€’ Engine revision 7764b5c55f β€’ Dart version 2.13.0 (build 2.13.0-116.0.dev) [βœ“] Android toolchain - develop for Android devices (Android SDK version 30.0.3) β€’ Android SDK at /home/taha/Code/SDK β€’ Platform android-30, build-tools 30.0.3 β€’ ANDROID_HOME = /home/taha/Code/SDK β€’ Java binary at: /home/taha/Code/android-studio/jre/bin/java β€’ Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593) β€’ All Android licenses accepted. [βœ“] Chrome - develop for the web β€’ CHROME_EXECUTABLE = /snap/bin/chromium [βœ“] Linux toolchain - develop for Linux desktop β€’ Ubuntu clang version 11.0.0-2 β€’ cmake version 3.16.3 β€’ ninja version 1.10.0 β€’ pkg-config version 0.29.2 [βœ“] Android Studio (version 4.1) β€’ Android Studio at /home/taha/Code/android-studio β€’ Flutter plugin version 54.0.1 β€’ Dart plugin version 201.9335 β€’ Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593) [βœ“] VS Code (version 1.54.1) β€’ VS Code at /usr/share/code β€’ Flutter extension version 3.20.0 [βœ“] Connected device (2 available) β€’ Linux (desktop) β€’ linux β€’ linux-x64 β€’ Linux β€’ Chrome (web) β€’ chrome β€’ web-javascript β€’ Chromium 89.0.4389.82 snap β€’ No issues found! ```

Thank you

aliyazdi75 commented 3 years ago

@TahaTesser I think adding nnbd tag is useful.