[camera_platform_interface] Add torch definition to the FlashModes enum  (#3326)

* Fix formatting issues

* Make sure torch value is serialized correctly
diff --git a/packages/camera/camera_platform_interface/CHANGELOG.md b/packages/camera/camera_platform_interface/CHANGELOG.md
index 500e8d6..ea9821e 100644
--- a/packages/camera/camera_platform_interface/CHANGELOG.md
+++ b/packages/camera/camera_platform_interface/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 1.0.4
+
+- Added the torch option to the FlashMode enum, which when implemented indicates the flash light should be turned on continuously.
+
 ## 1.0.3
 
 - Update Flutter SDK constraint.
diff --git a/packages/camera/camera_platform_interface/lib/src/method_channel/method_channel_camera.dart b/packages/camera/camera_platform_interface/lib/src/method_channel/method_channel_camera.dart
index bc836b0..3bf996f 100644
--- a/packages/camera/camera_platform_interface/lib/src/method_channel/method_channel_camera.dart
+++ b/packages/camera/camera_platform_interface/lib/src/method_channel/method_channel_camera.dart
@@ -226,6 +226,8 @@
         return 'auto';
       case FlashMode.always:
         return 'always';
+      case FlashMode.torch:
+        return 'torch';
       default:
         throw ArgumentError('Unknown FlashMode value');
     }
diff --git a/packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart b/packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart
index c398e9e..6f96079 100644
--- a/packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart
+++ b/packages/camera/camera_platform_interface/lib/src/platform_interface/camera_platform.dart
@@ -108,7 +108,7 @@
     throw UnimplementedError('resumeVideoRecording() is not implemented.');
   }
 
-  /// Sets the flash mode for taking pictures.
+  /// Sets the flash mode for the selected camera.
   Future<void> setFlashMode(int cameraId, FlashMode mode) {
     throw UnimplementedError('setFlashMode() is not implemented.');
   }
diff --git a/packages/camera/camera_platform_interface/lib/src/types/flash_mode.dart b/packages/camera/camera_platform_interface/lib/src/types/flash_mode.dart
index 6ed92e4..7feb59c 100644
--- a/packages/camera/camera_platform_interface/lib/src/types/flash_mode.dart
+++ b/packages/camera/camera_platform_interface/lib/src/types/flash_mode.dart
@@ -12,4 +12,7 @@
 
   /// Always use the flash when taking a picture.
   always,
+
+  /// Turns on the flash light and keeps it on until switched off.
+  torch,
 }
diff --git a/packages/camera/camera_platform_interface/pubspec.yaml b/packages/camera/camera_platform_interface/pubspec.yaml
index 9349c55..8cb643e 100644
--- a/packages/camera/camera_platform_interface/pubspec.yaml
+++ b/packages/camera/camera_platform_interface/pubspec.yaml
@@ -3,7 +3,7 @@
 homepage: https://github.com/flutter/plugins/tree/master/packages/camera/camera_platform_interface
 # NOTE: We strongly prefer non-breaking changes, even at the expense of a
 # less-clean API. See https://flutter.dev/go/platform-interface-breaking-changes
-version: 1.0.3
+version: 1.0.4
 
 dependencies:
   flutter:
diff --git a/packages/camera/camera_platform_interface/test/types/flash_mode_test.dart b/packages/camera/camera_platform_interface/test/types/flash_mode_test.dart
index 59726ac..c9df641 100644
--- a/packages/camera/camera_platform_interface/test/types/flash_mode_test.dart
+++ b/packages/camera/camera_platform_interface/test/types/flash_mode_test.dart
@@ -6,10 +6,10 @@
 import 'package:flutter_test/flutter_test.dart';
 
 void main() {
-  test('FlashMode should contain 3 options', () {
+  test('FlashMode should contain 4 options', () {
     final values = FlashMode.values;
 
-    expect(values.length, 3);
+    expect(values.length, 4);
   });
 
   test("FlashMode enum should have items in correct index", () {
@@ -18,5 +18,6 @@
     expect(values[0], FlashMode.off);
     expect(values[1], FlashMode.auto);
     expect(values[2], FlashMode.always);
+    expect(values[3], FlashMode.torch);
   });
 }