Skip to content

Removing Page from Navigator.pages should work even if it has LocalHistoryEntry #97836

@maRci002

Description

@maRci002

Steps to Reproduce

Remove Page from Navigator.pages when its corresponding Route has one or more LocalHistoryEntry.

Router API encourages developers to use declarative navigation, however if some Page has some LocalHistoryEntry then the corresponding Route won't be removed and the error isn't raised.

Usually developers won't use LocalHistoryEntry directly, however Scaffold's Drawer and BottomSheet use it indirectly.

This will happen when RouterDelegate.setNewRoutePath want to show specific Pages for instance '/' so it modifies AppState or a developer directly calls AppState.showXPage = false which will rebuild the Router without the just removed Page however Navigator still shows Route.

Expected results: throw error or ignore and throw away LocalHistoryEntry just like if it were a Pageless Route.

Actual results: Route remains in Navigator stack and the topmost LocalHistoryEntry is removed (test SAFE_MODE = false: press multiple times Add LocalHistoryEntry button then press browser backward button or press Close page declaratively button).

I also made a print statement which prints what Pages were given to Navigator
print(pages.map((e) => e.name).toList());

Note: there is a SAFE_MODE = false flag, false allows direct Appstate modification (declarative way).
Browser History: If SAFE_MODE = false and pressing browser's backward button

  1. base =>['/']
  2. pressing Show LocalHistoryEntryScreen => ['/', '/local-history-entry']
  3. pressing Add LocalHistoryEntry / Show drawer / Show bottomsheet => ['/', '/local-history-entry'] (Browser History remains the same and there isn't any duplication I mean there wasn't any push for instance by Route.navigate)
  4. browser backward button =>['/'] (However LocalHistoryEntryScreen's Route remains on the screen but Navigator got only RootScreen's Page inside pages array (check print log) and TOPMOST LocalHistoryEntry is removed)
  5. Router calls currentConfiguration => ['/'] (which is ok since showLocalHistoryEntryPage is false)

Browser History: If SAFE_MODE = true then pressing browser's backward button will modify Browser strangely (I delayed setNewRoutePath for illustration).

  1. base =>['/']
  2. pressing Show LocalHistoryEntryScreen => ['/', '/local-history-entry']
  3. pressing Add LocalHistoryEntry / Show drawer / Show bottomsheet => ['/', '/local-history-entry'] (Browser History remains the same and there isn't any duplication I mean there wasn't any push for instance by Route.navigate)
  4. browser backward button =>['/']
  5. Router calls currentConfiguration which navigates back => ['/', '/local-history-entry']
  6. Topmost LocalHistoryEntry is removed (since SAFE_MODE = true)
Code sample
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';

const SAFE_MODE = false;

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

class MyApp extends StatefulWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  final routerDelegate = MyRouterDelegate();
  final backButtonDispatcher = RootBackButtonDispatcher();

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp.router(
      title: 'Test: LocalHistoryEntry',
      routerDelegate: routerDelegate,
      backButtonDispatcher: backButtonDispatcher,
      routeInformationParser: const MyRouteParser(),
    );
  }
}

class MyRouterDelegate extends RouterDelegate<List<RouteSettings>> with ChangeNotifier {
  final navigatorKey = GlobalKey<NavigatorState>();
  final appState = AppState();

  MyRouterDelegate() {
    appState.addListener(notifyListeners);
  }

  @override
  Widget build(BuildContext context) {
    final pages = [
      const MaterialPage(
        key: ValueKey<String>('/'),
        name: '/',
        child: RootScreen(),
      ),
      if (appState.showLocalHistoryEntryPage)
        const MaterialPage(
          key: ValueKey<String>('/local-history-entry'),
          name: '/local-history-entry',
          child: LocalHistoryEntryScreen(),
        ),
    ];

    print(pages.map((e) => e.name).toList());

    return AppStateProvider(
      appState: appState,
      child: Navigator(
        key: navigatorKey,
        pages: pages,
        onPopPage: _onPopPage,
      ),
    );
  }

  bool _onPopPage(Route<dynamic> route, dynamic result) {
    final page = route.settings as Page;
    if (page.key == const ValueKey<String>('/')) {
      assert(!route.willHandlePopInternally);
      return false;
    }

    if (!route.didPop(result)) {
      return false;
    }

    if (page.key == const ValueKey<String>('/local-history-entry')) {
      appState.showLocalHistoryEntryPage = false;
      return true;
    }

    assert(false);
    return true;
  }

  @override
  Future<bool> popRoute() {
    final navigator = navigatorKey.currentState;
    if (navigator == null) {
      return SynchronousFuture<bool>(false);
    }

    return navigator.maybePop();
  }

  @override
  List<RouteSettings>? get currentConfiguration {
    final result = [const RouteSettings(name: '/')];

    if (appState.showLocalHistoryEntryPage) {
      result.add(const RouteSettings(name: '/local-history-entry'));
    }

    return result;
  }

  @override
  Future<void> setNewRoutePath(List<RouteSettings> configuration) {
    assert(configuration.isNotEmpty);

    final firstPath = configuration[0];
    if (configuration.length == 1) {
      // HomeScreen
      assert(firstPath.name == '/');
      if (appState.showLocalHistoryEntryPage) {
        if (SAFE_MODE) {
          final navigator = navigatorKey.currentState;
          if (navigator != null) {
            // delayed to illustrate Browser strange History
            return Future.delayed(const Duration(seconds: 1)).then((_) => navigator.maybePop());
          }
        } else {
          appState.showLocalHistoryEntryPage = false;
        }
      }
    } else {
      final secondPath = configuration[1];
      if (secondPath.name == '/local-history-entry') {
        // LocalHistoryEntryScreen screen
        appState.showLocalHistoryEntryPage = true;
      }
    }

    return SynchronousFuture<void>(null);
  }
}

class RootScreen extends StatelessWidget {
  const RootScreen({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('RootScreen')),
      body: Center(
        child: Column(
          children: [
            ElevatedButton(
              onPressed: () => AppState.of(context).showLocalHistoryEntryPage = true,
              child: const Text('Show LocalHistoryEntryScreen'),
            ),
          ],
        ),
      ),
    );
  }
}

class LocalHistoryEntryScreen extends StatefulWidget {
  const LocalHistoryEntryScreen({Key? key}) : super(key: key);

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

class _LocalHistoryEntryScreenState extends State<LocalHistoryEntryScreen> {
  int localHistoryEntyCounter = 0;

  void onRemoveLocalHistoryEntry() {
    if (mounted) {
      setState(() {
        localHistoryEntyCounter--;
      });
    }
  }

  void addLocalHistoryEntry() {
    setState(() {
      localHistoryEntyCounter++;
      ModalRoute.of(context)!.addLocalHistoryEntry(
        LocalHistoryEntry(onRemove: onRemoveLocalHistoryEntry),
      );
    });
  }

  void showAlert() {
    showDialog(
      context: context,
      builder: (context) {
        return AlertDialog(
          title: const Text('Alert Dialog'),
          content: const Text('Pageless route, safe to remove'),
          actions: [
            ElevatedButton(
              onPressed: () => Navigator.of(context).pop(),
              child: const Text('Navigator.pop'),
            ),
          ],
        );
      },
    );
  }

  void showBottomSheet(BuildContext context) {
    Scaffold.of(context).showBottomSheet(
      (BuildContext context) {
        return Container(
          height: 200,
          color: Colors.amber,
          child: Center(
            child: Column(
              mainAxisAlignment: MainAxisAlignment.center,
              mainAxisSize: MainAxisSize.min,
              children: <Widget>[
                const Text('Modal BottomSheet'),
                ElevatedButton(
                  child: const Text('Close BottomSheet'),
                  onPressed: () => Navigator.pop(context),
                ),
                ElevatedButton(
                  child: const Text('Close page declaratively'),
                  onPressed: SAFE_MODE ? null : () => AppState.of(context).showLocalHistoryEntryPage = false,
                ),
              ],
            ),
          ),
        );
      },
    );
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('LocalHistoryEntryScreen')),
      drawer: Drawer(
        child: ListView(
          padding: EdgeInsets.zero,
          children: [
            const DrawerHeader(
              decoration: BoxDecoration(color: Colors.blue),
              child: Text('Drawer Header'),
            ),
            ListTile(
              title: const Text('Navigator.pop'),
              onTap: () => Navigator.of(context).pop(),
            ),
            ListTile(
              title: const Text('Close page declaratively'),
              onTap: SAFE_MODE ? null : () => AppState.of(context).showLocalHistoryEntryPage = false,
            ),
          ],
        ),
      ),
      body: Center(
        child: Column(
          children: [
            Text('localHistoryEntyCounter: $localHistoryEntyCounter'),
            const SizedBox(height: 8),
            ElevatedButton(
              onPressed: addLocalHistoryEntry,
              child: const Text('Add LocalHistoryEntry'),
            ),
            const SizedBox(height: 8),
            ElevatedButton(
              onPressed: () => Navigator.of(context).pop(),
              child: const Text('Navigator.pop'),
            ),
            const SizedBox(height: 8),
            ElevatedButton(
              onPressed:
                  (!SAFE_MODE || (SAFE_MODE && localHistoryEntyCounter == 0)) ? () => AppState.of(context).showLocalHistoryEntryPage = false : null,
              child: const Text('Close page declaratively'),
            ),
            const SizedBox(height: 8),
            ElevatedButton(
              onPressed: showAlert,
              child: const Text('Show Alert'),
            ),
            const SizedBox(height: 8),
            Builder(builder: (context) {
              return ElevatedButton(
                onPressed: () => showBottomSheet(context),
                child: const Text('Show bottomsheet'),
              );
            }),
            const SizedBox(height: 8),
            Builder(builder: (context) {
              return ElevatedButton(
                onPressed: () => Scaffold.of(context).openDrawer(),
                child: const Text('Show drawer'),
              );
            }),
          ],
        ),
      ),
    );
  }
}

class AppState extends ChangeNotifier {
  static AppState of(BuildContext context, {bool depend = false}) {
    return maybeOf(context, depend: depend)!;
  }

  static AppState? maybeOf(BuildContext context, {bool depend = false}) {
    return InheritedModel.inheritFrom<AppStateProvider>(context, aspect: depend)?.appState;
  }

  bool _showLocalHistoryEntryPage = false;

  bool get showLocalHistoryEntryPage => _showLocalHistoryEntryPage;

  set showLocalHistoryEntryPage(bool value) {
    if (value != _showLocalHistoryEntryPage) {
      _showLocalHistoryEntryPage = value;
      notifyListeners();
    }
  }
}

class AppStateProvider extends InheritedModel<bool> {
  final AppState appState;

  const AppStateProvider({
    Key? key,
    required Widget child,
    required this.appState,
  }) : super(key: key, child: child);

  @override
  bool updateShouldNotify(AppStateProvider oldWidget) {
    // AppState is mutable
    return true;
  }

  @override
  bool updateShouldNotifyDependent(AppStateProvider oldWidget, Set<bool> dependencies) {
    return dependencies.contains(true);
  }
}

class MyRouteParser extends RouteInformationParser<List<RouteSettings>> {
  const MyRouteParser();

  // '/' => [/]
  // '/a/b/c' => [/, /a, /a/b, /a/b/c]
  // '/a/b/c/' => [/, /a, /a/b, /a/b/c]
  List<String> _parsePath(String path) {
    assert(path[0] == '/');
    final result = <String>[];

    for (var i = 0, len = path.length; i < len; ++i) {
      final c = path[i];

      if (c == '/') {
        int end;
        if (i == 0) {
          end = 1;
        } else if (i == len - 1) {
          end = len - 1;
        } else {
          end = i;
        }
        result.add(path.substring(0, end));
      } else if (i == len - 1) {
        result.add(path);
      }
    }

    return result;
  }

  @override
  Future<List<RouteSettings>> parseRouteInformation(RouteInformation routeInformation) {
    final routeName = routeInformation.location ?? '/';
    final queryIdx = routeName.indexOf('?');
    final path = routeName.substring(0, queryIdx >= 0 ? queryIdx : routeName.length);
    final query = queryIdx >= 0 ? routeName.substring(queryIdx + 1, routeName.length) : '';

    final url = Uri(path: path, query: query);
    final arguments = Map<String, String>.from(url.queryParameters);

    final result = _parsePath(path).map((p) => RouteSettings(name: p, arguments: arguments)).toList();
    return SynchronousFuture(result);
  }

  @override
  RouteInformation restoreRouteInformation(List<RouteSettings> configuration) {
    final last = configuration[configuration.length - 1];
    final path = last.name!;
    final queryParameters = last.arguments as Map<String, String>?;

    final url = Uri(path: path, queryParameters: queryParameters);
    return RouteInformation(location: url.toString());
  }
}
Logs

flutter run --verbose

C:\Users\maRci002\StudioProjects\uxr\nav2-usability\scenario_code>flutter run --verbose -t lib/test-router/router.dart
[  +82 ms] executing: [C:\flutter/] git -c log.showSignature=false log -n 1 --pretty=format:%H
[ +260 ms] Exit code 0 from: git -c log.showSignature=false log -n 1 --pretty=format:%H
[   +1 ms] 5f105a6ca7a5ac7b8bc9b241f4c2d86f4188cf5c
[        ] executing: [C:\flutter/] git tag --points-at 5f105a6ca7a5ac7b8bc9b241f4c2d86f4188cf5c
[  +44 ms] Exit code 0 from: git tag --points-at 5f105a6ca7a5ac7b8bc9b241f4c2d86f4188cf5c
[        ] 2.10.0
[   +9 ms] executing: [C:\flutter/] git rev-parse --abbrev-ref --symbolic @{u}
[  +35 ms] Exit code 0 from: git rev-parse --abbrev-ref --symbolic @{u}
[        ] origin/stable
[        ] executing: [C:\flutter/] git ls-remote --get-url origin
[  +31 ms] Exit code 0 from: git ls-remote --get-url origin
[        ] https://github.com/flutter/flutter.git
[ +115 ms] executing: [C:\flutter/] git rev-parse --abbrev-ref HEAD
[  +35 ms] Exit code 0 from: git rev-parse --abbrev-ref HEAD
[        ] stable
[  +85 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.
[   +4 ms] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'WindowsUwpEngineArtifacts' 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.
[  +64 ms] executing: C:\Users\maRci002\AppData\Local\Android\sdk\platform-tools\adb.exe devices -l
[  +45 ms] List of devices attached
[   +7 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.
[   +6 ms] Artifact Instance of 'WindowsUwpEngineArtifacts' 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.
[  +91 ms] Multiple devices found:
[  +19 ms] Chrome (web) • chrome • web-javascript • Google Chrome 97.0.4692.99
[   +1 ms] Edge (web)   • edge   • web-javascript • Microsoft Edge 97.0.1072.69
[   +1 ms] [1]: Chrome (chrome)
[        ] [2]: Edge (edge)
[   +2 ms] Please choose one (To quit, press "q/Q")
[        ] : 
[+23662 ms] 1
[  +62 ms] Skipping pub get: version match.
[  +80 ms] Generating C:\Users\maRci002\StudioProjects\uxr\nav2-usability\scenario_code\android\app\src\main\java\io\flutter\plugins\GeneratedPluginRegistrant.java
[  +99 ms] Launching lib/test-router/router.dart on Chrome in debug mode...
[ +136 ms] Updating assets
[  +83 ms] Waiting for connection from debug service on Chrome...
[  +99 ms] <- reset
[   +7 ms] C:\flutter\bin\cache\dart-sdk\bin\dart.exe --disable-dart-dev C:\flutter\bin\cache\artifacts\engine\windows-x64\frontend_server.dart.snapshot --sdk-root C:\flutter\bin\cache\flutter_web_sdk/
--incremental --target=dartdevc --debugger-module-names --experimental-emit-debug-metadata -DFLUTTER_WEB_AUTO_DETECT=true --output-dill
C:\Users\maRci002\AppData\Local\Temp\flutter_tools.2c2653f7\flutter_tool.63138dd1\app.dill --libraries-spec file:///C:/flutter/bin/cache/flutter_web_sdk/libraries.json --packages
C:\Users\maRci002\StudioProjects\uxr\nav2-usability\scenario_code\.dart_tool\package_config.json -Ddart.vm.profile=false -Ddart.vm.product=false --enable-asserts --track-widget-creation --filesystem-root
C:\Users\maRci002\AppData\Local\Temp\flutter_tools.2c2653f7\flutter_tools.d7bf8651 --filesystem-scheme org-dartlang-app --initialize-from-dill build\b1b715402d823b7fd5c2b68d2edcb2ce.cache.dill.track.dill
--platform file:///C:/flutter/bin/cache/flutter_web_sdk/kernel/flutter_ddc_sdk_sound.dill --sound-null-safety
[  +11 ms] <- compile org-dartlang-app:/web_entrypoint.dart
[+18031 ms] Waiting for connection from debug service on Chrome... (completed in 18,1s)
[   +1 ms] Synced 29.2MB.
[        ] <- accept
[        ] Caching compiled dill
[ +332 ms] [CHROME]:
[   +1 ms] [CHROME]: DevTools listening on ws://127.0.0.1:49465/devtools/browser/d52cb58f-a117-4a8c-995e-215a3c15af3c
[ +330 ms] DwdsInjector: Received request for entrypoint at http://localhost:49437/main_module.bootstrap.js
[   +5 ms] MetadataProvider: Loading debug metadata...
[   +5 ms] MetadataProvider: Loaded debug metadata for module: web_entrypoint.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/scenario_code/test-router/router.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/material.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/widgets.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/widgets/will_pop_scope.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/widgets/widget_inspector.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/rendering.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/rendering/wrap.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/rendering/layer.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/painting.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/painting/placeholder_span.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/services/text_formatter.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/services/text_layout_metrics.dart
[   +1 ms] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/services/text_editing.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/foundation.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/foundation/unicode.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/foundation/synchronous_future.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/foundation/stack_frame.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/foundation/object.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/foundation/constants.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/meta/meta.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/meta/meta_meta.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/foundation/serialization.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/typed_data/typed_buffers.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/typed_data/src/typed_buffer.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/foundation/print.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/foundation/_platform_web.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/foundation/observer_list.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/foundation/node.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/foundation/licenses.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/foundation/key.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/foundation/_isolates_web.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/foundation/debug.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/foundation/basic_types.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/foundation/consolidate_response.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/foundation/collections.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/foundation/change_notifier.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/foundation/_bitfield_web.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/foundation/binding.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/foundation/annotations.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/services/system_chrome.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/services/restoration.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/scheduler.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/scheduler/ticker.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/scheduler/binding.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/scheduler/priority.dart
[   +2 ms] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/scheduler/debug.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/collection/src/union_set_controller.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/collection/src/queue_list.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/collection/src/priority_queue.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/collection/src/utils.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/collection/src/list_extensions.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/collection/src/equality.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/collection/src/comparators.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/collection/src/algorithms.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/collection/src/iterable_zip.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/collection/src/iterable_extensions.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/collection/src/functions.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/collection/src/combined_wrappers/combined_map.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/collection/src/combined_wrappers/combined_iterable.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/collection/src/combined_wrappers/combined_iterator.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/collection/src/combined_wrappers/combined_list.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/collection/src/canonicalized_map.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/services/keyboard_maps.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/services/keyboard_key.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/services/binary_messenger.dart
[   +1 ms] MetadataProvider: Loaded debug metadata for module: packages/vector_math/vector_math_64.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/characters/characters.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/characters/src/extensions.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/characters/src/characters_impl.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/characters/src/grapheme_clusters/breaks.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/characters/src/grapheme_clusters/table.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/characters/src/grapheme_clusters/constants.dart
[   +2 ms] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/services/system_sound.dart
[   +1 ms] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/services/system_navigator.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/services/platform_views.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/gestures.dart
[   +1 ms] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/gestures/velocity_tracker.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/gestures/lsq_solver.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/gestures/events.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/gestures/gesture_settings.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/gestures/constants.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/gestures/team.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/gestures/binding.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/gestures/resampler.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/gestures/pointer_signal_resolver.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/gestures/pointer_router.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/gestures/hit_test.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/gestures/debug.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/gestures/converter.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/gestures/arena.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/gestures/tap.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/gestures/recognizer.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/gestures/scale.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/gestures/multitap.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/gestures/multidrag.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/gestures/drag_details.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/gestures/drag.dart
[   +1 ms] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/gestures/monodrag.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/gestures/long_press.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/gestures/force_press.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/gestures/eager.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/services/mouse_tracking.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/services/mouse_cursor.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/services/haptic_feedback.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/services/font_loader.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/services/deferred_component.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/services/debug.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/services/clipboard.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/painting/basic_types.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/painting/colors.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/painting/stadium_border.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/painting/rounded_rectangle_border.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/painting/edge_insets.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/painting/circle_border.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/painting/borders.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/painting/border_radius.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/painting/shape_decoration.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/painting/_network_image_web.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/painting/image_stream.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/painting/image_cache.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/painting/binding.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/painting/shader_warm_up.dart
[   +1 ms] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/painting/debug.dart
[   +1 ms] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/painting/gradient.dart
[   +1 ms] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/painting/alignment.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/painting/decoration_image.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/painting/box_fit.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/painting/decoration.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/painting/box_shadow.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/painting/box_decoration.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/painting/box_border.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/painting/paint_utilities.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/painting/notched_shapes.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/painting/matrix_utils.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/painting/image_resolution.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/painting/image_decoder.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/painting/geometry.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/painting/fractional_offset.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/painting/flutter_logo.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/painting/continuous_rectangle_border.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/painting/clip.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/painting/beveled_rectangle_border.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/semantics.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/semantics/semantics_service.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/semantics/semantics_event.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/semantics/semantics.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/semantics/binding.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/semantics/debug.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/animation.dart
[   +2 ms] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/animation/tween_sequence.dart
[   +1 ms] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/animation/listener_helpers.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/animation/curves.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/animation/animation_controller.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/physics.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/physics/utils.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/physics/tolerance.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/physics/spring_simulation.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/physics/simulation.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/physics/gravity_simulation.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/physics/friction_simulation.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/physics/clamped_simulation.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/rendering/layout_helper.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/rendering/viewport_offset.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/rendering/sliver.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/rendering/tweens.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/rendering/texture.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/rendering/table_border.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/rendering/table.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/rendering/stack.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/rendering/sliver_persistent_header.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/rendering/sliver_padding.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/rendering/sliver_multi_box_adaptor.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/rendering/sliver_list.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/rendering/sliver_grid.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/rendering/sliver_fixed_extent_list.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/rendering/sliver_fill.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/rendering/shifted_box.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/rendering/debug_overflow_indicator.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/rendering/rotated_box.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/rendering/proxy_sliver.dart
[   +1 ms] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/rendering/proxy_box.dart
[   +1 ms] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/rendering/platform_view.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/rendering/performance_overlay.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/rendering/paragraph.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/rendering/list_wheel_viewport.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/rendering/list_body.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/rendering/image.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/rendering/flow.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/rendering/flex.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/rendering/error.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/rendering/editable.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/rendering/custom_paint.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/rendering/custom_layout.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/rendering/animated_size.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/widgets/constants.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/widgets/scroll_simulation.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/widgets/scroll_metrics.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/widgets/value_listenable_builder.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/widgets/unique_widget.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/widgets/tween_animation_builder.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/widgets/implicit_animations.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/widgets/texture.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/widgets/text_selection_toolbar_layout_delegate.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/widgets/status_transitions.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/widgets/spacer.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/widgets/slotted_render_object_widget.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/widgets/sliver_prototype_extent_list.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/widgets/sliver_persistent_header.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/widgets/sliver_layout_builder.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/widgets/layout_builder.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/widgets/sliver_fill.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/widgets/size_changed_layout_notifier.dart
[   +1 ms] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/widgets/single_child_scroll_view.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/widgets/scroll_view.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/widgets/scroll_notification_observer.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/widgets/safe_area.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/widgets/reorderable_list.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/widgets/raw_keyboard_listener.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/widgets/preferred_size.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/widgets/platform_view.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/widgets/page_view.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/widgets/overflow_bar.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/widgets/orientation_builder.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/widgets/nested_scroll_view.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/widgets/navigation_toolbar.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/widgets/list_wheel_scroll_view.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/widgets/keyboard_listener.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/widgets/interactive_viewer.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/widgets/image_icon.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/widgets/icon_theme_data.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/widgets/icon_theme.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/widgets/icon.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/widgets/icon_data.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/widgets/image_filter.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/widgets/grid_paper.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/widgets/form.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/widgets/fade_in_image.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/widgets/dual_transition_builder.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/widgets/draggable_scrollable_sheet.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/widgets/drag_target.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/widgets/dismissible.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/widgets/desktop_text_selection_toolbar_layout_delegate.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/widgets/color_filter.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/widgets/bottom_navigation_bar_item.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/widgets/autocomplete.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/widgets/async.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/widgets/annotated_region.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/widgets/animated_switcher.dart
[   +1 ms] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/widgets/animated_size.dart
[   +1 ms] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/widgets/animated_list.dart
[   +1 ms] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/widgets/animated_cross_fade.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/user_accounts_drawer_header.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/icon_button.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/typography.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/colors.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/material_state.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/input_border.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/constants.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/material_color_utilities/material_color_utilities.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/material_color_utilities/score/score.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/material_color_utilities/utils/math_utils.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/material_color_utilities/utils/color_utils.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/material_color_utilities/hct/cam16.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/material_color_utilities/hct/viewing_conditions.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/material_color_utilities/scheme/scheme.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/material_color_utilities/palettes/core_palette.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/material_color_utilities/palettes/tonal_palette.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/material_color_utilities/hct/hct.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/material_color_utilities/quantize/quantizer_wu.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/material_color_utilities/quantize/quantizer_map.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/material_color_utilities/quantize/quantizer.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/material_color_utilities/quantize/quantizer_wsmeans.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/material_color_utilities/quantize/point_provider_lab.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/material_color_utilities/quantize/point_provider.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/material_color_utilities/quantize/quantizer_celebi.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/material_color_utilities/blend/blend.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/material_state_mixin.dart
[   +1 ms] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/tooltip_visibility.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/floating_action_button_theme.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/curves.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/bottom_sheet_theme.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/tab_indicator.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/tab_controller.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/icons.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/cupertino.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/cupertino/thumb_painter.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/cupertino/text_theme.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/cupertino/interface_level.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/cupertino/text_selection_toolbar_button.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/cupertino/button.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/cupertino/constants.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/cupertino/text_selection_toolbar.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/cupertino/text_selection.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/cupertino/debug.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/cupertino/text_form_field_row.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/cupertino/text_field.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/cupertino/icons.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/cupertino/desktop_text_selection.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/cupertino/form_row.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/cupertino/tab_view.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/cupertino/route.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/cupertino/app.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/cupertino/scrollbar.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/cupertino/tab_scaffold.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/cupertino/bottom_tab_bar.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/cupertino/switch.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/cupertino/sliding_segmented_control.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/cupertino/slider.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/cupertino/segmented_control.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/cupertino/search_field.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/cupertino/refresh.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/cupertino/activity_indicator.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/cupertino/picker.dart
[   +1 ms] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/cupertino/page_scaffold.dart
[   +1 ms] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/cupertino/nav_bar.dart
[   +1 ms] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/cupertino/form_section.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/cupertino/dialog.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/cupertino/date_picker.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/cupertino/context_menu_action.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/cupertino/context_menu.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/drawer_header.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/toggleable.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/toggle_buttons.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/time_picker.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/text_form_field.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/text_field.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/text_selection.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/text_selection_toolbar_text_button.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/text_selection_toolbar.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/selectable_text.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/desktop_text_selection.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/dialog.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/switch_list_tile.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/switch.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/shadows.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/stepper.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/slider.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/search.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/scrollbar.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/reorderable_list.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/refresh_indicator.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/progress_indicator.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/range_slider.dart
[   +1 ms] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/radio_list_tile.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/radio.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/popup_menu.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/paginated_data_table.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/dropdown.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/data_table_source.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/data_table.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/checkbox.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/card.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/page.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/outlined_button.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/no_splash.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/mergeable_material.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/input_date_picker_form_field.dart
[   +1 ms] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/date.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/grid_tile_bar.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/grid_tile.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/flutter_logo.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/expansion_tile.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/expansion_panel.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/expand_icon.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/elevated_button.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/date_picker_deprecated.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/date_picker.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/calendar_date_picker.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/circle_avatar.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/chip.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/checkbox_list_tile.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/button_bar.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/bottom_app_bar.dart
[   +1 ms] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/autocomplete.dart
[   +2 ms] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/arc.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/app.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/animated_icons.dart
[        ] MetadataProvider: Loaded debug metadata for module: packages/flutter/src/material/about.dart
[        ] MetadataProvider: Loaded debug metadata (sound null safety)
[   +5 ms] DwdsInjector: Injected debugging metadata for entrypoint at http://localhost:49437/main_module.bootstrap.js
[+2729 ms] ChromeProxyService: Initializing expression compiler for main_module.bootstrap.js with sound null safety: true
[  +79 ms] DevHandler: Debug service listening on ws://127.0.0.1:49489/5s0up8RC5vE=/ws

[  +20 ms] This app is linked to the debug service: ws://127.0.0.1:49489/5s0up8RC5vE=/ws
[  +10 ms] Debug service listening on ws://127.0.0.1:49489/5s0up8RC5vE=/ws
[        ]  Running with sound null safety 
[   +4 ms]   To hot restart changes while running, press "r" or "R".
[        ] For a more detailed help message, press "h". To quit, press "q".
[   +1 ms] An Observatory debugger and profiler on Chrome is available at: http://127.0.0.1:49489/5s0up8RC5vE=
[ +848 ms] [/]
[ +305 ms] The Flutter DevTools debugger and profiler on Chrome is available at: http://127.0.0.1:9100?uri=http://127.0.0.1:49489/5s0up8RC5vE=
[+10149 ms] [/, /local-history-entry]
[+4675 ms] [/]

flutter analyze

C:\Users\maRci002\StudioProjects\uxr\nav2-usability\scenario_code>flutter analyze
Analyzing scenario_code...

   info - Prefer using lowerCamelCase for constant names - lib\test-router\router.dart:4:7 - constant_identifier_names
   info - Avoid `print` calls in production code - lib\test-router\router.dart:62:5 - avoid_print

2 issues found. (ran in 1.5s)

flutter doctor -v

C:\Users\maRci002\StudioProjects\uxr\nav2-usability\scenario_code>flutter doctor -v
[√] Flutter (Channel stable, 2.10.0, on Microsoft Windows [Version 10.0.19044.1503], locale hu-HU)
    • Flutter version 2.10.0 at C:\flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 5f105a6ca7 (3 days ago), 2022-02-01 14:15:42 -0800
    • Engine revision 776efd2034
    • Dart version 2.16.0
    • DevTools version 2.9.2

[√] Android toolchain - develop for Android devices (Android SDK version 32.1.0-rc1)
    • Android SDK at C:\Users\maRci002\AppData\Local\Android\sdk
    • Platform android-32, build-tools 32.1.0-rc1
    • Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 11.0.11+9-b60-7590822)
    • All Android licenses accepted.

[√] Chrome - develop for the web
    • Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe

[X] Visual Studio - develop for Windows
    X Visual Studio not installed; this is necessary for Windows development.
      Download at https://visualstudio.microsoft.com/downloads/.
      Please install the "Desktop development with C++" workload, including all of its default components

[√] Android Studio (version 2021.1)
    • Android Studio at C:\Program Files\Android\Android Studio
    • 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.11+9-b60-7590822)

[√] Connected device (3 available)
    • Windows (desktop) • windows • windows-x64    • Microsoft Windows [Version 10.0.19044.1503]
    • Chrome (web)      • chrome  • web-javascript • Google Chrome 97.0.4692.99
    • Edge (web)        • edge    • web-javascript • Microsoft Edge 97.0.1072.69

[√] HTTP Host Availability
    • All required HTTP hosts are available

! Doctor found issues in 1 category.

Illustration
SAFE_MODE = false
router

SAFE_MODE = true + 1 sec delay
router_safe

Metadata

Metadata

Assignees

Labels

P2Important issues not at the top of the work listf: routesNavigator, Router, and related APIs.found in release: 2.10Found to occur in 2.10found in release: 2.11Found to occur in 2.11frameworkflutter/packages/flutter repository. See also f: labels.has reproducible stepsThe issue has been confirmed reproducible and is ready to work onr: fixedIssue is closed as already fixed in a newer versionteam-frameworkOwned by Framework teamtriaged-frameworkTriaged by Framework team

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions