Added MaterialStateProperty.all() convenience method (#56589)

diff --git a/packages/flutter/lib/src/material/material_state.dart b/packages/flutter/lib/src/material/material_state.dart
index 9bc53c5..2d4936e 100644
--- a/packages/flutter/lib/src/material/material_state.dart
+++ b/packages/flutter/lib/src/material/material_state.dart
@@ -209,14 +209,27 @@
 
   /// Convenience method for creating a [MaterialStateProperty] from a
   /// [MaterialPropertyResolver] function alone.
-  static MaterialStateProperty<T> resolveWith<T>(MaterialPropertyResolver<T> callback) => _MaterialStateProperty<T>(callback);
+  static MaterialStateProperty<T> resolveWith<T>(MaterialPropertyResolver<T> callback) => _MaterialStatePropertyWith<T>(callback);
+
+  /// Convenience method for creating a [MaterialStateProperty] that resolves
+  /// to a single value for all states.
+  static MaterialStateProperty<T> all<T>(T value) => _MaterialStatePropertyAll<T>(value);
 }
 
-class _MaterialStateProperty<T> implements MaterialStateProperty<T> {
-  _MaterialStateProperty(this._resolve);
+class _MaterialStatePropertyWith<T> implements MaterialStateProperty<T> {
+  _MaterialStatePropertyWith(this._resolve);
 
   final MaterialPropertyResolver<T> _resolve;
 
   @override
   T resolve(Set<MaterialState> states) => _resolve(states);
 }
+
+class _MaterialStatePropertyAll<T> implements MaterialStateProperty<T> {
+  _MaterialStatePropertyAll(this.value);
+
+  final T value;
+
+  @override
+  T resolve(Set<MaterialState> states) => value;
+}
diff --git a/packages/flutter/test/material/material_state_property_test.dart b/packages/flutter/test/material/material_state_property_test.dart
new file mode 100644
index 0000000..8ce450c
--- /dev/null
+++ b/packages/flutter/test/material/material_state_property_test.dart
@@ -0,0 +1,33 @@
+// Copyright 2014 The Flutter Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import 'package:flutter_test/flutter_test.dart';
+import 'package:flutter/material.dart';
+
+
+void main() {
+  test('MaterialStateProperty.resolveWith()', () {
+    final MaterialStateProperty<MaterialState> value = MaterialStateProperty.resolveWith<MaterialState>(
+      (Set<MaterialState> states) => states.first,
+    );
+    expect(value.resolve(<MaterialState>{MaterialState.hovered}), MaterialState.hovered);
+    expect(value.resolve(<MaterialState>{MaterialState.focused}), MaterialState.focused);
+    expect(value.resolve(<MaterialState>{MaterialState.pressed}), MaterialState.pressed);
+    expect(value.resolve(<MaterialState>{MaterialState.dragged}), MaterialState.dragged);
+    expect(value.resolve(<MaterialState>{MaterialState.selected}), MaterialState.selected);
+    expect(value.resolve(<MaterialState>{MaterialState.disabled}), MaterialState.disabled);
+    expect(value.resolve(<MaterialState>{MaterialState.error}), MaterialState.error);
+  });
+
+  test('MaterialStateProperty.all()', () {
+    final MaterialStateProperty<int> value = MaterialStateProperty.all<int>(123);
+    expect(value.resolve(<MaterialState>{MaterialState.hovered}), 123);
+    expect(value.resolve(<MaterialState>{MaterialState.focused}), 123);
+    expect(value.resolve(<MaterialState>{MaterialState.pressed}), 123);
+    expect(value.resolve(<MaterialState>{MaterialState.dragged}), 123);
+    expect(value.resolve(<MaterialState>{MaterialState.selected}), 123);
+    expect(value.resolve(<MaterialState>{MaterialState.disabled}), 123);
+    expect(value.resolve(<MaterialState>{MaterialState.error}), 123);
+  });
+}