Tap on dropdown button in tests does not work (#6566)

The theme fallback mechanism was busted by the shadowThemeOnly change.

Fixes #6562
diff --git a/packages/flutter/lib/src/material/theme.dart b/packages/flutter/lib/src/material/theme.dart
index c4a562b..d83fc6c 100644
--- a/packages/flutter/lib/src/material/theme.dart
+++ b/packages/flutter/lib/src/material/theme.dart
@@ -101,8 +101,12 @@
   /// ```
   static ThemeData of(BuildContext context, { bool shadowThemeOnly: false }) {
     final Theme theme = context.inheritFromWidgetOfExactType(Theme);
-    final ThemeData themeData = theme?.data ?? _kFallbackTheme;
-    return shadowThemeOnly ? (theme.isMaterialAppTheme ? null : themeData) : themeData;
+    if (shadowThemeOnly) {
+      if (theme == null || theme.isMaterialAppTheme)
+        return null;
+      return theme.data;
+    }
+    return (theme != null) ? theme.data : _kFallbackTheme;
   }
 
   @override
diff --git a/packages/flutter/test/material/drop_down_test.dart b/packages/flutter/test/material/drop_down_test.dart
index b30b418..87e0793 100644
--- a/packages/flutter/test/material/drop_down_test.dart
+++ b/packages/flutter/test/material/drop_down_test.dart
@@ -64,6 +64,72 @@
     expect(value, equals('two'));
   });
 
+  testWidgets('Drop down button with no app', (WidgetTester tester) async {
+    List<String> items = <String>['one', 'two', 'three', 'four'];
+    String value = items.first;
+
+    void didChangeValue(String newValue) {
+      value = newValue;
+    }
+
+    Widget build() {
+      return new Navigator(
+        initialRoute: '/',
+        onGenerateRoute: (RouteSettings settings) {
+          return new MaterialPageRoute<Null>(
+            settings: settings,
+            builder: (BuildContext context) {
+              return new Material(
+                child: new Center(
+                  child: new DropdownButton<String>(
+                    value: value,
+                    items: items.map((String item) {
+                      return new DropdownMenuItem<String>(
+                        value: item,
+                        child: new Text(item),
+                      );
+                    }).toList(),
+                    onChanged: didChangeValue,
+                  ),
+                )
+              );
+            },
+          );
+        }
+      );
+    }
+
+    await tester.pumpWidget(build());
+
+    await tester.tap(find.text('one'));
+    await tester.pump();
+    await tester.pump(const Duration(seconds: 1)); // finish the menu animation
+
+    expect(value, equals('one'));
+
+    await tester.tap(find.text('three').last);
+
+    await tester.pump();
+    await tester.pump(const Duration(seconds: 1)); // finish the menu animation
+
+    expect(value, equals('three'));
+
+    await tester.tap(find.text('three'));
+    await tester.pump();
+    await tester.pump(const Duration(seconds: 1)); // finish the menu animation
+
+    expect(value, equals('three'));
+
+    await tester.pumpWidget(build());
+
+    await tester.tap(find.text('two').last);
+
+    await tester.pump();
+    await tester.pump(const Duration(seconds: 1)); // finish the menu animation
+
+    expect(value, equals('two'));
+  });
+
   testWidgets('Drop down screen edges', (WidgetTester tester) async {
     int value = 4;
     List<DropdownMenuItem<int>> items = <DropdownMenuItem<int>>[];
diff --git a/packages/flutter/test/material/theme_test.dart b/packages/flutter/test/material/theme_test.dart
index c206e8c..90e594a 100644
--- a/packages/flutter/test/material/theme_test.dart
+++ b/packages/flutter/test/material/theme_test.dart
@@ -34,6 +34,21 @@
     expect(Theme.of(tester.element(find.text('menuItem'))).brightness, equals(Brightness.dark));
   });
 
+  testWidgets('Fallback theme', (WidgetTester tester) async {
+    BuildContext capturedContext;
+    await tester.pumpWidget(
+      new Builder(
+        builder: (BuildContext context) {
+          capturedContext = context;
+          return new Container();
+        }
+      )
+    );
+
+    expect(Theme.of(capturedContext), equals(new ThemeData.fallback()));
+    expect(Theme.of(capturedContext, shadowThemeOnly: true), isNull);
+  });
+
   testWidgets('PopupMenu inherits shadowed app theme', (WidgetTester tester) async {
     // Regression test for https://github.com/flutter/flutter/issues/5572
     final Key popupMenuButtonKey = new UniqueKey();