Recognize Fuchsia as a target platform (#5451)

Currently, we just treat Fuchsia as TargetPlatform.android, but we might
want to do something more sophisticated in the future.
diff --git a/packages/flutter/lib/src/foundation/platform.dart b/packages/flutter/lib/src/foundation/platform.dart
index 4854155..b722842 100644
--- a/packages/flutter/lib/src/foundation/platform.dart
+++ b/packages/flutter/lib/src/foundation/platform.dart
@@ -11,6 +11,9 @@
   /// Android: <https://www.android.com/>
   android,
 
+  /// Fuchsia: <https://fuchsia.googlesource.com/>
+  fuchsia,
+
   /// iOS: <http://www.apple.com/ios/>
   iOS,
 }
@@ -30,6 +33,8 @@
     result = TargetPlatform.iOS;
   } else if (Platform.isAndroid || Platform.isLinux) {
     result = TargetPlatform.android;
+  } else if (Platform.operatingSystem == "fuchsia") {
+    result = TargetPlatform.fuchsia;
   }
   assert(() {
     if (Platform.environment.containsKey('FLUTTER_TEST'))
diff --git a/packages/flutter/lib/src/material/app.dart b/packages/flutter/lib/src/material/app.dart
index 094b611..7d0fdc2 100644
--- a/packages/flutter/lib/src/material/app.dart
+++ b/packages/flutter/lib/src/material/app.dart
@@ -157,10 +157,10 @@
 }
 
 class _ScrollLikeMountainViewDelegate extends ScrollConfigurationDelegate {
-  const _ScrollLikeMountainViewDelegate();
+  const _ScrollLikeMountainViewDelegate(this.platform);
 
   @override
-  TargetPlatform get platform => TargetPlatform.android;
+  final TargetPlatform platform;
 
   @override
   ExtentScrollBehavior createScrollBehavior() => new OverscrollWhenScrollableBehavior(platform: TargetPlatform.android);
@@ -203,7 +203,9 @@
   ScrollConfigurationDelegate _getScrollDelegate(TargetPlatform platform) {
     switch (platform) {
       case TargetPlatform.android:
-        return const _ScrollLikeMountainViewDelegate();
+        return const _ScrollLikeMountainViewDelegate(TargetPlatform.android);
+      case TargetPlatform.fuchsia:
+        return const _ScrollLikeMountainViewDelegate(TargetPlatform.fuchsia);
       case TargetPlatform.iOS:
         return const _ScrollLikeCupertinoDelegate();
     }
diff --git a/packages/flutter/lib/src/material/app_bar.dart b/packages/flutter/lib/src/material/app_bar.dart
index 8043060..4878b58 100644
--- a/packages/flutter/lib/src/material/app_bar.dart
+++ b/packages/flutter/lib/src/material/app_bar.dart
@@ -254,6 +254,7 @@
     assert(themeData.platform != null);
     switch (themeData.platform) {
       case TargetPlatform.android:
+      case TargetPlatform.fuchsia:
         return false;
       case TargetPlatform.iOS:
         return true;
diff --git a/packages/flutter/lib/src/material/flexible_space_bar.dart b/packages/flutter/lib/src/material/flexible_space_bar.dart
index faf679b..54d3fb6 100644
--- a/packages/flutter/lib/src/material/flexible_space_bar.dart
+++ b/packages/flutter/lib/src/material/flexible_space_bar.dart
@@ -64,6 +64,7 @@
     assert(theme.platform != null);
     switch (theme.platform) {
       case TargetPlatform.android:
+      case TargetPlatform.fuchsia:
         return false;
       case TargetPlatform.iOS:
         return true;
diff --git a/packages/flutter/lib/src/widgets/scroll_behavior.dart b/packages/flutter/lib/src/widgets/scroll_behavior.dart
index 51dc774..562fbac 100644
--- a/packages/flutter/lib/src/widgets/scroll_behavior.dart
+++ b/packages/flutter/lib/src/widgets/scroll_behavior.dart
@@ -75,6 +75,7 @@
     assert(platform != null);
     switch (platform) {
       case TargetPlatform.android:
+      case TargetPlatform.fuchsia:
         return _kScrollDragMountainView;
       case TargetPlatform.iOS:
         return _kScrollDragCupertino;