Issue 1:
Steps to Reproduce

My app has a nested route: Route A -> Route B -> Route C. Route A to Route B and RouteB to Route C is fine. But when from Route C back to Route B back to Route A, app crashed.

But Route A to Route B and from Route B back to Route A is OK.

Logs

flutter: Another exception was thrown: Multiple widgets used the same GlobalKey.
flutter: Another exception was thrown: 'package:flutter/src/widgets/framework.dart': Failed assertion: line 4748 pos 12: '_children.contains(child)': is not true.
flutter: Another exception was thrown: NoSuchMethodError: The getter 'context' was called on null.
flutter: Another exception was thrown: Duplicate GlobalKey detected in widget tree.

info • This class inherits from a class marked as @immutable, and therefore should be immutable (all instance fields must be final) • lib/common/detail_means.dart:5:7
info • This class inherits from a class marked as @immutable, and therefore should be immutable (all instance fields must be final) • lib/components/book_options.dart:4:7
info • This class inherits from a class marked as @immutable, and therefore should be immutable (all instance fields must be final) • lib/components/category.dart:5:7
info • This class inherits from a class marked as @immutable, and therefore should be immutable (all instance fields must be final) • lib/components/detail.dart:6:7
info • This class inherits from a class marked as @immutable, and therefore should be immutable (all instance fields must be final) • lib/components/dictionary.dart:8:7
info • 'JSON' is deprecated and shouldn't be used • lib/components/dictionary.dart:62:18
info • This class inherits from a class marked as @immutable, and therefore should be immutable (all instance fields must be final) • lib/components/setting.dart:6:7
info • Name non-constant identifiers using lowerCamelCase • lib/components/setting.dart:16:8
info • Name non-constant identifiers using lowerCamelCase • lib/components/setting.dart:17:8
info • Name non-constant identifiers using lowerCamelCase • lib/components/setting.dart:19:8
info • Avoid using braces in interpolation when not needed • lib/components/setting.dart:108:44
info • This class inherits from a class marked as @immutable, and therefore should be immutable (all instance fields must be final) • lib/components/word_detail.dart:7:7
info • This class inherits from a class marked as @immutable, and therefore should be immutable (all instance fields must be final) • lib/components/word_list.dart:8:7
info • This class inherits from a class marked as @immutable, and therefore should be immutable (all instance fields must be final) • lib/components/wordcard.dart:11:7
info • Name non-constant identifiers using lowerCamelCase • lib/components/wordcard.dart:101:11
info • Don't explicitly initialize variables to null • lib/main.dart:40:10
info • Name non-constant identifiers using lowerCamelCase • lib/main.dart:40:10
info • Name non-constant identifiers using lowerCamelCase • lib/model/db.dart:12:14
info • Name non-constant identifiers using lowerCamelCase • lib/model/db.dart:13:14
info • Name non-constant identifiers using lowerCamelCase • lib/model/db.dart:14:14
info • Name non-constant identifiers using lowerCamelCase • lib/model/db.dart:15:14
info • Name non-constant identifiers using lowerCamelCase • lib/model/word.dart:7:9
info • Name non-constant identifiers using lowerCamelCase • lib/model/word.dart:8:9
info • Name non-constant identifiers using lowerCamelCase • lib/model/word.dart:9:9
info • Name non-constant identifiers using lowerCamelCase • lib/model/word.dart:10:9
info • Name non-constant identifiers using lowerCamelCase • lib/model/word.dart:13:8
info • Name non-constant identifiers using lowerCamelCase • lib/model/word.dart:15:37
info • Name non-constant identifiers using lowerCamelCase • lib/model/word.dart:15:48
info • Name non-constant identifiers using lowerCamelCase • lib/model/word.dart:15:63
info • Name non-constant identifiers using lowerCamelCase • lib/model/word.dart:15:74
info • Name non-constant identifiers using lowerCamelCase • lib/model/word.dart:15:89
info • Avoid using braces in interpolation when not needed • lib/model/word.dart:18:39

[✓] Flutter (Channel beta, v0.5.1, on Mac OS X 10.13.1 17B1003, locale zh-Hans-CN)
• Flutter version 0.5.1 at /Users/neil/flutter
• Framework revision c7ea3ca377 (3 months ago), 2018-05-29 21:07:33 +0200
• Engine revision 1ed25ca7b7
• Dart version 2.0.0-dev.58.0.flutter-f981f09760

[✓] Android toolchain - develop for Android devices (Android SDK 27.0.3)
• Android SDK at /Users/neil/Library/Android/sdk
• Android NDK location not configured (optional; useful for native profiling support)
• Platform android-27, build-tools 27.0.3
• ANDROID_HOME = /Users/neil/Library/Android/sdk
• Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1024-b01)
• All Android licenses accepted.

[!] iOS toolchain - develop for iOS devices (Xcode 9.2)
• Xcode at /Applications/Xcode.app/Contents/Developer
• Xcode 9.2, Build version 9C40b
• ios-deploy 1.9.2
! CocoaPods out of date (1.5.0 is recommended).
CocoaPods is used to retrieve the iOS platform side's plugin code that responds to your plugin usage on the Dart side.
Without resolving iOS dependencies with CocoaPods, plugins will not work on iOS.
For more info, see https://flutter.io/platform-plugins
To upgrade:
brew upgrade cocoapods
pod setup

[✓] Android Studio (version 3.1)
• Android Studio at /Applications/Android Studio.app/Contents
✗ Flutter plugin not installed; this adds Flutter specific functionality.
✗ Dart plugin not installed; this adds Dart specific functionality.
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1024-b01)

[✓] IntelliJ IDEA Ultimate Edition (version 2017.3.5)
• IntelliJ at /Applications/IntelliJ IDEA.app
• Flutter plugin version 22.2.2
• Dart plugin version 173.4700

[✓] VS Code (version 1.23.1)
• VS Code at /Applications/Visual Studio Code.app/Contents
• Flutter extension version 2.14.0

[✓] Connected devices (1 available)
• Android SDK built for x86 • emulator-5554 • android-x86 • Android 8.1.0 (API 27) (emulator)

! Doctor found issues in 1 category.

Issue 2:
Steps to Reproduce

I'm loading a NetworkImage in a Flutter test, and it's failing with a 404 error. I've tried a number of different images that I can access from my browser, but the test is unable to load them.

Diff from flutter_markdown/master: https://github.com/flutter/flutter_markdown/compare/master...DaveShuckerow:image-fix

Any clue what might cause the error?

Logs

══╡ EXCEPTION CAUGHT BY SERVICES ╞══════════════════════════════════════════════════════════════════
The following _Exception was thrown resolving an image codec:
Exception: HTTP request failed, statusCode: 404,
https://pbs.twimg.com/profile_images/760249570085314560/yCrkrbl3.jpg

When the exception was thrown, this was the stack:
#0 NetworkImage._loadAsync (package:flutter/src/services/image_provider.dart:442:7)
<asynchronous suspension>
#1 NetworkImage.load (package:flutter/src/services/image_provider.dart:425:14)
#2 ImageProvider.resolve.<anonymous closure>.<anonymous closure> (package:flutter/src/services/image_provider.dart:265:61)
#3 ImageCache.putIfAbsent (package:flutter/src/services/image_cache.dart:82:22)
#4 ImageProvider.resolve.<anonymous closure> (package:flutter/src/services/image_provider.dart:265:38)
#5 SynchronousFuture.then (package:flutter/src/foundation/synchronous_future.dart:38:29)
#6 ImageProvider.resolve (package:flutter/src/services/image_provider.dart:263:30)
#7 _ImageState._resolveImage (package:flutter/src/widgets/image.dart:480:20)
#8 _ImageState.didChangeDependencies (package:flutter/src/widgets/image.dart:455:5)
#9 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:3660:12)
#10 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3519:5)
#11 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2857:14)
#12 MultiChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4637:32)
#13 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2857:14)
#14 Element.updateChild (package:flutter/src/widgets/framework.dart:2660:12)
#15 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4532:14)
#16 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2857:14)
#17 Element.updateChild (package:flutter/src/widgets/framework.dart:2660:12)
#18 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3556:16)
#19 Element.rebuild (package:flutter/src/widgets/framework.dart:3445:5)
#20 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3524:5)
#21 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3519:5)
#22 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2857:14)
#23 Element.updateChild (package:flutter/src/widgets/framework.dart:2660:12)
#24 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3556:16)
#25 Element.rebuild (package:flutter/src/widgets/framework.dart:3445:5)
#26 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3524:5)
#27 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3519:5)
#28 ParentDataElement.mount (package:flutter/src/widgets/framework.dart:3837:16)
#29 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2857:14)
#30 Element.updateChild (package:flutter/src/widgets/framework.dart:2660:12)
#31 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3556:16)
#32 Element.rebuild (package:flutter/src/widgets/framework.dart:3445:5)
#33 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3524:5)
#34 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:3662:22)
#35 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3519:5)
#36 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2857:14)
#37 Element.updateChild (package:flutter/src/widgets/framework.dart:2660:12)
#38 SliverMultiBoxAdaptorElement.createChild.<anonymous closure> (package:flutter/src/widgets/sliver.dart:723:20)
#39 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2173:19)
#40 SliverMultiBoxAdaptorElement.createChild (package:flutter/src/widgets/sliver.dart:716:11)
#41 RenderSliverMultiBoxAdaptor._createOrObtainChild.<anonymous closure> (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:238:23)
#42 RenderObject.invokeLayoutCallback.<anonymous closure> (package:flutter/src/rendering/object.dart:1645:58)
#43 PipelineOwner._enableMutationsToDirtySubtrees (package:flutter/src/rendering/object.dart:734:15)
#44 RenderObject.invokeLayoutCallback (package:flutter/src/rendering/object.dart:1645:13)
#45 RenderSliverMultiBoxAdaptor._createOrObtainChild (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:227:5)
#46 RenderSliverMultiBoxAdaptor.addInitialChild (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:335:5)
#47 RenderSliverList.performLayout (package:flutter/src/rendering/sliver_list.dart:78:12)
#48 RenderObject.layout (package:flutter/src/rendering/object.dart:1549:7)
#49 RenderSliverPadding.performLayout (package:flutter/src/rendering/sliver_padding.dart:182:11)
#50 RenderObject.layout (package:flutter/src/rendering/object.dart:1549:7)
#51 RenderViewportBase.layoutChildSequence (package:flutter/src/rendering/viewport.dart:287:13)
#52 RenderViewport._attemptLayout (package:flutter/src/rendering/viewport.dart:980:12)
#53 RenderViewport.performLayout (package:flutter/src/rendering/viewport.dart:904:20)
#54 RenderObject.layout (package:flutter/src/rendering/object.dart:1549:7)
#55 RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:106:13)
#56 RenderObject.layout (package:flutter/src/rendering/object.dart:1549:7)
#57 RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:106:13)
#58 RenderObject.layout (package:flutter/src/rendering/object.dart:1549:7)
#59 RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:106:13)
#60 RenderObject.layout (package:flutter/src/rendering/object.dart:1549:7)
#61 RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:106:13)
#62 RenderObject.layout (package:flutter/src/rendering/object.dart:1549:7)
#63 RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:106:13)
#64 RenderObject.layout (package:flutter/src/rendering/object.dart:1549:7)
#65 RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:106:13)
#66 RenderObject.layout (package:flutter/src/rendering/object.dart:1549:7)
#67 RenderView.performLayout (package:flutter/src/rendering/view.dart:142:13)
#68 RenderObject._layoutWithoutResize (package:flutter/src/rendering/object.dart:1424:7)
#69 PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:712:18)
#70 AutomatedTestWidgetsFlutterBinding.drawFrame (package:flutter_test/src/binding.dart:599:23)
#71 BindingBase&SchedulerBinding&GestureBinding&RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:200:5)
#72 BindingBase&SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:713:15)
#73 BindingBase&SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:649:9)
#74 AutomatedTestWidgetsFlutterBinding.pump.<anonymous closure> (package:flutter_test/src/binding.dart:565:9)
#77 TestAsyncUtils.guard (package:flutter_test/src/test_async_utils.dart:69:44)
#78 AutomatedTestWidgetsFlutterBinding.pump (package:flutter_test/src/binding.dart:553:27)
#79 WidgetTester.pumpWidget.<anonymous closure> (package:flutter_test/src/widget_tester.dart:192:22)
#82 TestAsyncUtils.guard (package:flutter_test/src/test_async_utils.dart:69:44)
#83 WidgetTester.pumpWidget (package:flutter_test/src/widget_tester.dart:189:27)
#84 main.<anonymous closure> (///usr/local/google/home/djshuckerow/Open/github.com/DaveShuckerow/flutter_markdown/test/flutter_markdown_test.dart:170:18)
<asynchronous suspension>
#85 testWidgets.<anonymous closure>.<anonymous closure>.<anonymous closure> (package:flutter_test/src/widget_tester.dart:60:25)
#86 TestWidgetsFlutterBinding._runTestBody (package:flutter_test/src/binding.dart:464:19)
<asynchronous suspension>
#89 TestWidgetsFlutterBinding._runTest (package:flutter_test/src/binding.dart:451:14)
#90 AutomatedTestWidgetsFlutterBinding.runTest.<anonymous closure> (package:flutter_test/src/binding.dart:632:24)
#96 AutomatedTestWidgetsFlutterBinding.runTest (package:flutter_test/src/binding.dart:630:16)
#97 testWidgets.<anonymous closure>.<anonymous closure> (package:flutter_test/src/widget_tester.dart:59:24)
#98 Declarer.test.<anonymous closure>.<anonymous closure> (package:test/src/backend/declarer.dart:160:19)
<asynchronous suspension>
#99 Invoker.waitForOutstandingCallbacks.<anonymous closure> (package:test/src/backend/invoker.dart:206:15)
<asynchronous suspension>
#103 Invoker.waitForOutstandingCallbacks (package:test/src/backend/invoker.dart:203:5)
#104 Declarer.test.<anonymous closure> (package:test/src/backend/declarer.dart:158:29)
<asynchronous suspension>
#105 Invoker._onRun.<anonymous closure>.<anonymous closure>.<anonymous closure> (package:test/src/backend/invoker.dart:351:23)
<asynchronous suspension>
#119 _Timer._runTimers (dart:isolate-patch/dart:isolate/timer_impl.dart:367)
#120 _Timer._handleMessage (dart:isolate-patch/dart:isolate/timer_impl.dart:401)
#121 _RawReceivePortImpl._handleMessage (dart:isolate-patch/dart:isolate/isolate_patch.dart:163)
(elided 27 frames from class _FakeAsync, package dart:async, package dart:async-patch, and package
stack_trace)

Image provider: NetworkImage("https://pbs.twimg.com/profile_images/760249570085314560/yCrkrbl3.jpg",
scale: 1.0)
Image key: NetworkImage("https://pbs.twimg.com/profile_images/760249570085314560/yCrkrbl3.jpg",
scale: 1.0)
════════════════════════════════════════════════════════════════════════════════════════════════════
00:01 +9 -1: - Image links [E]
Test failed. See exception logs above.
The test description was: Image links

00:02 +15 -1: Some tests failed.

Flutter Doctor

[✓] Flutter (on Linux, locale en_US.UTF-8, channel master)
• Flutter at /<snip>/flutter
• Framework revision 9315a79b11 (2 hours ago), 2017-12-07 13:31:32 -0800
• Engine revision f888186e50
• Tools Dart version 1.25.0-dev.11.0
• Engine Dart version 2.0.0-edge.e7b7b68ef6e7b1e5df379b628134764c489901dc

For more information about diagnosing and reporting Flutter bugs, please see https://flutter.io/bug-reports/.