Git Product home page Git Product logo

verygoodopensource / mockingjay Goto Github PK

View Code? Open in Web Editor NEW
111.0 7.0 8.0 187 KB

A package that makes it easy to mock, test, and verify navigation in Flutter. Created by Very Good Ventures ๐Ÿฆ„

Home Page: https://pub.dev/packages/mockingjay

License: MIT License

Dart 90.04% Kotlin 0.17% Swift 0.54% Objective-C 0.05% HTML 4.89% Shell 4.32%
flutter flutter-package dart flutter-navigation mocking mock

mockingjay's People

Contributors

alestiago avatar biplab-dutta avatar dependabot[bot] avatar erickzanardo avatar felangel avatar jeroen-meijer avatar jigneshworld avatar renancaraujo avatar tomarra avatar tregan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

mockingjay's Issues

Unable to work with routes using private types.

It seems to be unable to mock navigator interactions when code in tests depends on types that are not publicly visible.

It's not uncommon that the Flutter SDK uses internal types that cannot be used outside the sdk. E.g. trying to test that DropdownButton pushes a dropdown menu will throw due to the when method generic type param that cannot be stubbed.

image

Attempting the above will fail with:

Exception has occurred.
TestFailure (No matching calls. All calls: MockNavigator.canPop(), MockNavigator.push<_DropdownRouteResult<String>>(_DropdownRoute<String>(RouteSettings(none, null), animation: null))

Mock navigator should expose a way of working around internal types (or maybe there already is one that I'm unaware of).

Unable to use mockingjay on a Windows host machine

Describe the bug
When trying to use mockingjay on a brand new project, running on my Windows machine, I get fatal error.

To Reproduce
On a brand new Flutter project, create a widget test file with the code example that can be found on the mockingjay README:

import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:mockingjay/mockingjay.dart';

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

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: TextButton(
        onPressed: () => Navigator.of(context).push(MySettingsPage.route()),
        child: const Text('Navigate'),
      ),
    );
  }
}

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

  static Route<void> route() {
    return MaterialPageRoute(
      builder: (_) => const MySettingsPage(),
      settings: const RouteSettings(name: '/settings'),
    );
  }

  @override
  Widget build(BuildContext context) {
    return const Scaffold();
  }
}

void main() {
  testWidgets('pushes SettingsPage when TextButton is tapped', (tester) async {
    final navigator = MockNavigator();
    when(() => navigator.push<void>(any())).thenAnswer((_) async {});

    await tester.pumpWidget(
      MaterialApp(
        home: MockNavigatorProvider(
          navigator: navigator,
          child: const MyHomePage(),
        ),
      ),
    );

    await tester.tap(find.byType(TextButton));

    verify(
      () => navigator.push<void>(
        any(
          that: isRoute<void>(
            whereName: equals('/settings'),
          ),
        ),
      ),
    ).called(1);
  });
}

Then run the test and check that in fact it doesn't work with the following stack trace:

$ flutter test
00:05 +0: pushes SettingsPage when TextButton is tapped
โ•โ•โ•ก EXCEPTION CAUGHT BY WIDGETS LIBRARY โ•žโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
The following assertion was thrown while finalizing the widget tree:
'package:flutter/src/widgets/overlay.dart': Failed assertion: line 168 pos 12: '_overlay != null':
is not true.

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

When the exception was thrown, this was the stack:
#2      OverlayEntry.remove (package:flutter/src/widgets/overlay.dart:168:12)
#3      NavigatorState._disposeRouteEntry (package:flutter/src/widgets/navigator.dart:3486:20)
#4      NavigatorState._forcedDisposeAllRouteEntries (package:flutter/src/widgets/navigator.dart:3480:7)
#5      NavigatorState.dispose (package:flutter/src/widgets/navigator.dart:3667:5)
#6      StatefulElement.unmount (package:flutter/src/widgets/framework.dart:5508:11)
#7      _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1952:13)
#8      _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#9      SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6420:14)
#10     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#11     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#12     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#13     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#14     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#15     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6420:14)
#16     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#17     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#18     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6420:14)
#19     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#20     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#21     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#22     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#23     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#24     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6420:14)
#25     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#26     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#27     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#28     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#29     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#30     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6420:14)
#31     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#32     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#33     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#34     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#35     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#36     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#37     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#38     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#39     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6420:14)
#40     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#41     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#42     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#43     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#44     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#45     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6420:14)
#46     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#47     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#48     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#49     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#50     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#51     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#52     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#53     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#54     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#55     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#56     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#57     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#58     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#59     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#60     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6420:14)
#61     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#62     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#63     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#64     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#65     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#66     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6420:14)
#67     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#68     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#69     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#70     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#71     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#72     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#73     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#74     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#75     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#76     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#77     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#78     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#79     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#80     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#81     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#82     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#83     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#84     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#85     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#86     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#87     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6420:14)
#88     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#89     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#90     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#91     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#92     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#93     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#94     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#95     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#96     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#97     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#98     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#99     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#100    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#101    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#102    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#103    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#104    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#105    SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6420:14)
#106    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#107    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#108    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#109    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#110    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#111    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#112    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#113    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#114    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#115    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#116    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#117    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#118    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#119    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#120    MultiChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6532:16)
#121    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#122    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#123    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#124    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#125    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#126    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#127    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#128    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#129    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#130    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#131    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#132    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#133    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#134    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#135    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#136    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#137    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#138    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#139    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#140    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#141    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#142    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#143    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#144    SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6420:14)
#145    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#146    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#147    SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6420:14)
#148    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#149    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#150    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#151    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#152    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#153    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#154    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#155    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#156    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#157    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#158    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#159    SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6420:14)
#160    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#161    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#162    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#163    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#164    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#165    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#166    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#167    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#168    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#169    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#170    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#171    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#172    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#173    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#174    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#175    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#176    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#177    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#178    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#179    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#180    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#181    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#182    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#183    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#184    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#185    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#186    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#187    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#188    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#189    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#190    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#191    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#192    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#193    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#194    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#195    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#196    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#197    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#198    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#199    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#200    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#201    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#202    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#203    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#204    SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6420:14)
#205    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#206    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#207    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#208    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#209    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#210    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#211    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#212    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#213    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#214    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#215    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#216    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#217    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#218    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#219    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#220    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#221    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#222    SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6420:14)
#223    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#224    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#225    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#226    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#227    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#228    SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6420:14)
#229    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#230    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#231    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#232    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#233    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#234    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#235    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#236    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#237    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#238    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#239    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#240    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#241    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#242    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#243    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#244    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#245    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#246    SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6420:14)
#247    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#248    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#249    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#250    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#251    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#252    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#253    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#254    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#255    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#256    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#257    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#258    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#259    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#260    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#261    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#262    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#263    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#264    SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6420:14)
#265    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#266    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#267    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#268    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#269    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#270    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#271    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#272    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#273    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#274    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#275    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#276    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#277    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#278    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#279    SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6420:14)
#280    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#281    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#282    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#283    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#284    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#285    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#286    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#287    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#288    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#289    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#290    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#291    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#292    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#293    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#294    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#295    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#296    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#297    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#298    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#299    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#300    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#301    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#302    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#303    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#304    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#305    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#306    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#307    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#308    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#309    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#310    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#311    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#312    SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6420:14)
#313    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#314    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#315    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#316    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#317    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#318    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#319    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#320    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#321    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#322    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#323    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#324    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#325    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#326    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#327    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#328    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#329    ListIterable.forEach (dart:_internal/iterable.dart:39:13)
#330    _InactiveElements._unmountAll (package:flutter/src/widgets/framework.dart:1961:25)
#331    BuildOwner.lockState (package:flutter/src/widgets/framework.dart:2639:15)
#332    BuildOwner.finalizeTree (package:flutter/src/widgets/framework.dart:3049:7)
#333    AutomatedTestWidgetsFlutterBinding.drawFrame (package:flutter_test/src/binding.dart:1397:19)
#334    RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:360:5)
#335    SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1297:15)
#336    SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1227:9)
#337    AutomatedTestWidgetsFlutterBinding.scheduleWarmUpFrame (package:flutter_test/src/binding.dart:1324:5)
#338    runApp (package:flutter/src/widgets/binding.dart:1096:7)
#339    TestWidgetsFlutterBinding._runTestBody (package:flutter_test/src/binding.dart:989:7)
<asynchronous suspension>
<asynchronous suspension>
(elided 3 frames from class _AssertionError and package:stack_trace)
โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
00:05 +0 -1: pushes SettingsPage when TextButton is tapped [E]
  Test failed. See exception logs above.
  The test description was: pushes SettingsPage when TextButton is tapped


To run this test again: C:\Users\arthu\flutter\bin\cache\dart-sdk\bin\dart.exe test C:/Users/arthu/Documents/flutter/navalia/hello_world/test/widget_test.dart -p vm --plain-name "pushes SettingsPage when TextButton is tapped"
00:06 +0 -1: Some tests failed.

Expected behavior
Expect the test case to run successfully.

Additional context
That problem was found on a much larger project with other developers that use a different OS other than Windows. Recently a new developer joined the team and is facing this issue with even simple "hello world" projects.

Upgrade mockingjay deps to support mocktail v1.0.0

There's a new mocktail version out (yay!). Unfortunately I can't use it because mockingjay still has a dep on mocktail: ^0.3.0.

Can you please release a new version of mockingjay with updated deps?

Unable to use latest version of build_runner 2.3.2 with mockingjay

Describe the bug
If a project has build_runner 2.3.2 (latest of writing), mockingjay 0.3.0 won't work

Expected behavior
flutter pub get should work

logs
The current Dart SDK version is 2.17.1.

Because test >=1.16.6 <1.17.10 depends on analyzer ^1.0.0 and test >=1.17.10 <1.20.0 depends on analyzer >=1.0.0 <3.0.0, test >=1.16.6 <1.20.0 requires analyzer >=1.0.0 <3.0.0.
And because test >=1.20.0 <1.21.0 depends on analyzer >=2.0.0 <4.0.0 and test >=1.21.5 requires SDK version >=2.18.0-146.0.dev <3.0.0, test >=1.16.6 <1.21.0-โˆž or >=1.21.5 requires analyzer >=1.0.0 <4.0.0.
And because test >=1.21.4 <1.21.5 depends on test_core 0.4.16 and test >=1.21.3 <1.21.4 depends on test_core 0.4.15, test >=1.16.6 <1.21.0-โˆž or >=1.21.3 requires analyzer >=1.0.0 <4.0.0 or test_core 0.4.15 or 0.4.16.
And because test >=1.21.2 <1.21.3 depends on test_core 0.4.14 and test >=1.21.0 <1.21.2 depends on test_core 0.4.13, test >=1.16.6 requires analyzer >=1.0.0 <4.0.0 or test_core 0.4.13 or 0.4.14 or 0.4.15 or 0.4.16.
And because build_runner >=2.2.1 depends on analyzer >=4.4.0 <6.0.0 and mockingjay >=0.2.0 depends on test ^1.17.0, if build_runner >=2.2.1 and mockingjay >=0.2.0 then test_core 0.4.13 or 0.4.14 or 0.4.15 or 0.4.16.
And because test_core >=0.3.23 <0.4.17 depends on frontend_server_client ^2.1.0 and build_runner >=2.3.1 depends on frontend_server_client ^3.0.0, build_runner >=2.3.1 is incompatible with mockingjay >=0.2.0.
So, because sofi_x_package depends on both build_runner ^2.3.2 and mockingjay ^0.3.0, version solving failed.
pub get failed (1; So, because sofi_x_package depends on both build_runner ^2.3.2 and mockingjay ^0.3.0, version solving failed.)

Additional context
Downgrading to build_runner 2.2.1 acts a workaround

How to test the OpenContainer navigation?

Is your feature request related to a problem? Please describe.
This is not a feature request but please consider it as a question.
How to test the OpenContainer navigation using Mockingjay?

Describe the question
I have OpenContainer navigation in my project and I want to test this type of navigation. Can I use this package for testing this?

Problems with Flutter `3.13.0`.

Hi, I'm using mockingjay in my project and using the Flutter 3.13.0 I have this problem below.

In the Flutter 3.10.0, my test run and work as expected.

This PR maybe can fix this:

thanks for the proposal, @erickzanardo. :)


โ•โ•ก EXCEPTION CAUGHT BY WIDGETS LIBRARY โ•žโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
The following assertion was thrown while finalizing the widget tree:
'package:flutter/src/widgets/overlay.dart': Failed assertion: line 168 pos 12: '_overlay != null':
is not true.

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

When the exception was thrown, this was the stack:
#2      OverlayEntry.remove (package:flutter/src/widgets/overlay.dart:168:12)
#3      NavigatorState._disposeRouteEntry (package:flutter/src/widgets/navigator.dart:3486:20)
#4      NavigatorState._forcedDisposeAllRouteEntries (package:flutter/src/widgets/navigator.dart:3480:7)
#5      NavigatorState.dispose (package:flutter/src/widgets/navigator.dart:3667:5)
#6      StatefulElement.unmount (package:flutter/src/widgets/framework.dart:5508:11)
#7      _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1952:13)
#8      _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#9      SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6420:14)
#10     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#11     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#12     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#13     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#14     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#15     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6420:14)
#16     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#17     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#18     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6420:14)
#19     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#20     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#21     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#22     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#23     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#24     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6420:14)
#25     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#26     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#27     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#28     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#29     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#30     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6420:14)
#31     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#32     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#33     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#34     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#35     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#36     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#37     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#38     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#39     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6420:14)
#40     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#41     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#42     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#43     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#44     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#45     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6420:14)
#46     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#47     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#48     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#49     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#50     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#51     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#52     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#53     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#54     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#55     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#56     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#57     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#58     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#59     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#60     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6420:14)
#61     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#62     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#63     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#64     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#65     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#66     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6420:14)
#67     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#68     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#69     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#70     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#71     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#72     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#73     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#74     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#75     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#76     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#77     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#78     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#79     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#80     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#81     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#82     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#83     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#84     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#85     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#86     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#87     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6420:14)
#88     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#89     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#90     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#91     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#92     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#93     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#94     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#95     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#96     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#97     _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#98     _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#99     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#100    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#101    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#102    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#103    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#104    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#105    SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6420:14)
#106    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#107    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#108    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#109    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#110    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#111    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#112    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#113    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#114    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#115    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#116    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#117    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#118    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#119    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#120    MultiChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6532:16)
#121    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#122    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#123    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#124    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#125    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#126    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#127    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#128    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#129    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#130    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#131    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#132    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#133    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#134    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#135    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#136    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#137    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#138    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#139    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#140    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#141    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#142    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#143    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#144    SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6420:14)
#145    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#146    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#147    SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6420:14)
#148    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#149    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#150    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#151    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#152    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#153    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#154    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#155    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#156    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#157    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#158    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#159    SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6420:14)
#160    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#161    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#162    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#163    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#164    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#165    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#166    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#167    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#168    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#169    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#170    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#171    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#172    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#173    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#174    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#175    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#176    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#177    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#178    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#179    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#180    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#181    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#182    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#183    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#184    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#185    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#186    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#187    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#188    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#189    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#190    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#191    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#192    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#193    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#194    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#195    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#196    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#197    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#198    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#199    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#200    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#201    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#202    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#203    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#204    SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6420:14)
#205    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#206    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#207    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#208    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#209    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#210    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#211    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#212    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#213    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#214    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#215    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#216    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#217    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#218    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#219    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#220    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#221    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#222    SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6420:14)
#223    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#224    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#225    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#226    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#227    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#228    SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6420:14)
#229    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#230    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#231    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#232    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#233    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#234    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#235    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#236    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#237    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#238    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#239    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#240    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#241    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#242    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#243    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#244    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#245    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#246    SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6420:14)
#247    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#248    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#249    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#250    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#251    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#252    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#253    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#254    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#255    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#256    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#257    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#258    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#259    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#260    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#261    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#262    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#263    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#264    SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6420:14)
#265    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#266    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#267    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#268    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#269    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#270    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#271    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#272    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#273    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#274    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#275    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#276    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#277    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#278    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#279    SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6420:14)
#280    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#281    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#282    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#283    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#284    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#285    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#286    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#287    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#288    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#289    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#290    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#291    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#292    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#293    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#294    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#295    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#296    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#297    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#298    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#299    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#300    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#301    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#302    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#303    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#304    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#305    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#306    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#307    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#308    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#309    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#310    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#311    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#312    SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6420:14)
#313    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#314    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#315    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#316    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#317    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#318    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#319    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#320    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#321    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#322    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#323    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#324    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#325    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#326    _InactiveElements._unmount.<anonymous closure> (package:flutter/src/widgets/framework.dart:1950:7)
#327    ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#328    _InactiveElements._unmount (package:flutter/src/widgets/framework.dart:1948:13)
#329    ListIterable.forEach (dart:_internal/iterable.dart:39:13)
#330    _InactiveElements._unmountAll (package:flutter/src/widgets/framework.dart:1961:25)
#331    BuildOwner.lockState (package:flutter/src/widgets/framework.dart:2639:15)
#332    BuildOwner.finalizeTree (package:flutter/src/widgets/framework.dart:3049:7)
#333    AutomatedTestWidgetsFlutterBinding.drawFrame (package:flutter_test/src/binding.dart:1397:19)
#334    RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:360:5)
#335    SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1297:15)
#336    SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1227:9)
#337    AutomatedTestWidgetsFlutterBinding.scheduleWarmUpFrame (package:flutter_test/src/binding.dart:1324:5)
#338    runApp (package:flutter/src/widgets/binding.dart:1096:7)
#339    TestWidgetsFlutterBinding._runTestBody (package:flutter_test/src/binding.dart:989:7)
<asynchronous suspension>
(elided 2 frames from class _AssertionError)

docs: outdated README

The readme has install instructions for version 0.3.0.

Change it to instructions using dart pub add

Dependency on mocktail 0.2.0 prevents from using with 0.3.0

Describe the bug

Mockingjay is dependent on mocktail 0.2.0 and cannot be used with 0.3.0

To Reproduce
Steps to reproduce the behavior:

Define dependencies:

dev_dependencies:
  bloc_test: ^9.0.2
  flutter_test:
    sdk: flutter
  mockingjay: ^0.2.0
  mocktail: ^0.3.0

See flutter packages get output:

Because app depends on mockingjay ^0.2.0 which depends on mocktail ^0.2.0, mocktail ^0.2.0 is required. So, because app depends on mocktail ^0.3.0, version solving failed.

Expected behavior

Packages should resolve successfully

How is the Example supposed to work? I get a "type Null is not a subtype of type Future<dynamic>" error

Description

I tried to use Mockingjay and used it according to the example, but all my tests failed. Well then, I copied the whole example into a new smalltest_test.dart file - but even the example fails.

Steps to reproduce the behavior:

  1. Create *_test.dart with the content of the Example from the docs (v0.3.0)
  2. Run the test - it will fail...

Expected:

I expected the example to be failsave... am I missing something?

Additional content

Error message from Flutter Test
00:04 +0: pushes SettingsPage when TextButton is tapped
โ•โ•โ•ก EXCEPTION CAUGHT BY GESTURE โ•žโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
The following _TypeError was thrown while handling a gesture:
type 'Null' is not a subtype of type 'Future<dynamic>'

When the exception was thrown, this was the stack:
#0      MockNavigator.push (package:flutter/src/widgets/navigator.dart:4364:14)
#1      _MockNavigatorState.push (package:mockingjay/src/mock_navigator.dart:80:23)
#2      MyHomePage.build.<anonymous closure> (file:///C:/Users/Username/Documents/CarbPro/test/smalltest_test.dart:12:48)
#3      _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:989:21)
#4      GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:198:24)
#5      TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:608:11)
#6      BaseTapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:296:5)
#7      BaseTapGestureRecognizer.handlePrimaryPointer (package:flutter/src/gestures/tap.dart:230:7)
#8      PrimaryPointerGestureRecognizer.handleEvent (package:flutter/src/gestures/recognizer.dart:563:9)
#9      PointerRouter._dispatch (package:flutter/src/gestures/pointer_router.dart:94:12)
#10     PointerRouter._dispatchEventToRoutes.<anonymous closure> (package:flutter/src/gestures/pointer_router.dart:139:9)
#11     _LinkedHashMapMixin.forEach (dart:collection-patch/compact_hash.dart:539:8)
#12     PointerRouter._dispatchEventToRoutes (package:flutter/src/gestures/pointer_router.dart:137:18)
#13     PointerRouter.route (package:flutter/src/gestures/pointer_router.dart:123:7)
#14     GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:439:19)
#15     GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:419:22)
#16     RendererBinding.dispatchEvent (package:flutter/src/rendering/binding.dart:322:11)
#17     GestureBinding._handlePointerEventImmediately (package:flutter/src/gestures/binding.dart:374:7)
#18     GestureBinding.handlePointerEvent (package:flutter/src/gestures/binding.dart:338:5)
#19     TestWidgetsFlutterBinding.handlePointerEventForSource.<anonymous closure> (package:flutter_test/src/binding.dart:496:42)
#20     TestWidgetsFlutterBinding.withPointerEventSource (package:flutter_test/src/binding.dart:506:11)
#21     TestWidgetsFlutterBinding.handlePointerEventForSource (package:flutter_test/src/binding.dart:496:5)
#22     WidgetTester.sendEventToBinding.<anonymous closure> (package:flutter_test/src/widget_tester.dart:808:15)
#23     WidgetTester.sendEventToBinding.<anonymous closure> (package:flutter_test/src/widget_tester.dart:807:39)
#26     TestAsyncUtils.guard (package:flutter_test/src/test_async_utils.dart:71:41)
#27     WidgetTester.sendEventToBinding (package:flutter_test/src/widget_tester.dart:807:27)
#28     TestGesture.up.<anonymous closure> (package:flutter_test/src/test_pointer.dart:394:24)
#29     TestGesture.up.<anonymous closure> (package:flutter_test/src/test_pointer.dart:392:39)
#32     TestAsyncUtils.guard (package:flutter_test/src/test_async_utils.dart:71:41)
#33     TestGesture.up (package:flutter_test/src/test_pointer.dart:392:27)
#34     WidgetController.tapAt.<anonymous closure> (package:flutter_test/src/controller.dart:280:21)
<asynchronous suspension>
<asynchronous suspension>
(elided 5 frames from dart:async and package:stack_trace)

Handler: "onTap"
Recognizer:
  TapGestureRecognizer#fe552
โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
โ•โ•โ•ก EXCEPTION CAUGHT BY FLUTTER TEST FRAMEWORK โ•žโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
The following TestFailure was thrown running a test:
No matching calls. All calls:
MockNavigator.push<dynamic>(MaterialPageRoute<dynamic>(RouteSettings("/settings", null), animation:
null))
(If you called `verify(...).called(0);`, please instead use `verifyNever(...);`.)

When the exception was thrown, this was the stack:
#0      fail (package:test_api/src/expect/expect.dart:137:31)
#1      _VerifyCall._checkWith (package:mocktail/src/mocktail.dart:722:7)
#2      _makeVerify.<anonymous closure> (package:mocktail/src/mocktail.dart:515:18)
#3      main.<anonymous closure> (file:///C:/Users/Username/Documents/CarbPro/test/smalltest_test.dart:51:11)
<asynchronous suspension>
<asynchronous suspension>
(elided one frame from package:stack_trace)

The test description was:
  pushes SettingsPage when TextButton is tapped
โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
โ•โ•โ•ก EXCEPTION CAUGHT BY FLUTTER TEST FRAMEWORK โ•žโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
The following message was thrown:
Multiple exceptions (2) were detected during the running of the current test, and at least one was
unexpected.
โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
00:04 +0 -1: pushes SettingsPage when TextButton is tapped [E]
  Test failed. See exception logs above.
  The test description was: pushes SettingsPage when TextButton is tapped

00:04 +0 -1: Some tests failed.
Test code (1:1 the example code)
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:mockingjay/mockingjay.dart';

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

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: TextButton(
        onPressed: () => Navigator.of(context).push(MySettingsPage.route()),
        child: const Text('Navigate'),
      ),
    );
  }
}

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

  static Route route() {
    return MaterialPageRoute(
      builder: (_) => const MySettingsPage(),
      settings: const RouteSettings(name: '/settings'),
    );
  }

  @override
  Widget build(BuildContext context) {
    return const Scaffold();
  }
}

void main() {
  testWidgets('pushes SettingsPage when TextButton is tapped', (tester) async {
    final navigator = MockNavigator();
    when(() => navigator.push(any())).thenAnswer((_) async {});

    await tester.pumpWidget(
      MaterialApp(
        home: MockNavigatorProvider(
          navigator: navigator,
          child: const MyHomePage(),
        ),
      ),
    );

    await tester.tap(find.byType(TextButton));

    verify(
      () => navigator
          .push(any(that: isRoute<void>(whereName: equals('/settings')))),
    ).called(1);
  });
}

Flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[โˆš] Flutter (Channel stable, 2.10.2, on Microsoft Windows [Version 10.0.22000.556], locale de-CH)
[โˆš] Android toolchain - develop for Android devices (Android SDK version 32.0.0)
[โˆš] Chrome - develop for the web
[โˆš] Visual Studio - develop for Windows (Visual Studio Community 2022 17.0.5)
[โˆš] Android Studio (version 2021.1)
[โˆš] VS Code (version 1.66.0)
[โˆš] Connected device (4 available)
[โˆš] HTTP Host Availability

โ€ข No issues found!

Improving The example

Am I missing somethiing? If I change the example to not wrap the MaterialApp twice by just returning Builder widget I can than incorporate with using eBay's golden toolkit and possibly ebay's given when then.

Is there any desire reason to nestingMaterialApp twice?

Navigator.pop is never called while it actually was

Describe the bug
When I open a dialog with showDialog and I pop it, verify tells me it never called .pop while it did.

popping...
popped!
โ•โ•โ•ก EXCEPTION CAUGHT BY FLUTTER TEST FRAMEWORK โ•žโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
The following TestFailure was thrown running a test:
No matching calls. All calls: [VERIFIED] MockNavigator.canPop()
(If you called `verify(...).called(0);`, please instead use `verifyNever(...);`.)

When the exception was thrown, this was the stack:
#0      fail (package:matcher/src/expect/expect.dart:149:31)
#1      _VerifyCall._checkWith (package:mocktail/src/mocktail.dart:728:7)
#2      _makeVerify.<anonymous closure> (package:mocktail/src/mocktail.dart:519:18)
#3      main.<anonymous closure>.<anonymous closure> (file:///Users/path/to/file/flutter_mockingjay/test/main_test.dart:33:13)
<asynchronous suspension>
#4      testWidgets.<anonymous closure>.<anonymous closure> (package:flutter_test/src/widget_tester.dart:168:15)
<asynchronous suspension>
#5      TestWidgetsFlutterBinding._runTestBody (package:flutter_test/src/binding.dart:1013:5)
<asynchronous suspension>
<asynchronous suspension>
(elided one frame from package:stack_trace)

The test description was:
  can pop a dialog
โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
Test failed. See exception logs above.
The test description was: can pop a dialog

โœ– MainApp can pop a dialog
popping...
popped!
โœ“ MainApp can pop a normal widget

To Reproduce

Reproducible example: https://github.com/egonm12/flutter_mockingjay/tree/main

void main() {
  group(MainApp, () {
    late MockNavigator mockNavigator;

    setUp(() {
      mockNavigator = MockNavigator();

      when(() => mockNavigator.canPop()).thenReturn(true);
      when(() => mockNavigator.pop(any())).thenReturn(null);
    });

    testWidgets('can pop a dialog', (WidgetTester tester) async {
      await tester.pumpWidget(
        MaterialApp(
          home: MockNavigatorProvider(
            navigator: mockNavigator,
            child: const MyFloatingActionButton(),
          ),
        ),
      );
      await tester.tap(find.byType(FloatingActionButton));
      await tester.pump();
      await tester.pumpAndSettle();

      await tester.tap(find.byType(TextButton));

      verify(() => mockNavigator.canPop()).called(1);
      verify(() => mockNavigator.pop<Object?>(any())).called(1);
    });

    testWidgets('can pop a normal widget', (WidgetTester tester) async {
      await tester.pumpWidget(
        MaterialApp(
          home: MockNavigatorProvider(
            navigator: mockNavigator,
            child: const MyWidget(),
          ),
        ),
      );
      await tester.tap(find.byType(ElevatedButton));

      verify(() => mockNavigator.canPop()).called(1);
      verify(() => mockNavigator.pop<Object?>(any())).called(1);
    });
  });
}

Expected behavior

All tests pass

feat: MockNavigatorProvider auto complete to support lint rule sort_child_properties_last

Is your feature request related to a problem? Please describe.
when writing code on IDE/code editor(VS Code or any other) for MockNavigatorProvider their suggestions or auto-completes with child as a first and navigator as a second but when user has sort_child_properties_last lint rule enabled then code editor hint lint problem and user needs to manually fix that every time after auto-completes or later.

Describe the solution you'd like
For MockNavigatorProvider - I would like to have navigator as a first and child as a last argument

Additional context
Screenshot 2021-09-09 at 11 49 09 AM

Screenshot 2021-09-09 at 11 50 49 AM

NavigatorState is mockable?

Is there any form to mock NavigatorState?
In my navigations tests with Navigator.of(context) the mock with mockingjay works fine, but some parts of my application uses NavigatorState and the mocks are not working as expected.

Future pushNamed(String routeName, {Object? arguments}) async => await _getCurrentState()!.pushNamed(routeName, arguments: arguments);

The _getCurrentState just return a NavigatorState.

When i run the test the behavior pushNamed are not overridden as expected.

var mockNavigator = MockNavigator();
when(() => mockNavigator.pushNamed(any())).thenAnswer((_) async => {});

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.