diff --git a/packages/flutter/lib/src/material/flat_button.dart b/packages/flutter/lib/src/material/flat_button.dart
index 91142aa..54358d1 100644
--- a/packages/flutter/lib/src/material/flat_button.dart
+++ b/packages/flutter/lib/src/material/flat_button.dart
@@ -12,102 +12,22 @@
 import 'theme.dart';
 import 'theme_data.dart';
 
-/// A material design "flat button".
+/// A Material Design "flat button".
 ///
-/// ### This class is obsolete, please use [TextButton] instead.
+/// ### This class is deprecated, please use [TextButton] instead.
 ///
 /// FlatButton, RaisedButton, and OutlineButton have been replaced by
-/// TextButton, ElevatedButton, and OutlinedButton respectively.
-/// ButtonTheme has been replaced by TextButtonTheme,
-/// ElevatedButtonTheme, and OutlinedButtonTheme. The original classes
-/// will be deprecated soon, please migrate code that uses them.
+/// [TextButton], [ElevatedButton], and [OutlinedButton] respectively.
+/// ButtonTheme has been replaced by [TextButtonTheme],
+/// [ElevatedButtonTheme], and [OutlinedButtonTheme]. The original classes
+/// will eventually be removed, please migrate code that uses them.
 /// There's a detailed migration guide for the new button and button
 /// theme classes in
 /// [flutter.dev/go/material-button-migration-guide](https://flutter.dev/go/material-button-migration-guide).
-///
-/// A flat button is a text label displayed on a (zero elevation) [Material]
-/// widget that reacts to touches by filling with color.
-///
-/// Use flat buttons on toolbars, in dialogs, or inline with other content but
-/// offset from that content with padding so that the button's presence is
-/// obvious. Flat buttons intentionally do not have visible borders and must
-/// therefore rely on their position relative to other content for context. In
-/// dialogs and cards, they should be grouped together in one of the bottom
-/// corners. Avoid using flat buttons where they would blend in with other
-/// content, for example in the middle of lists.
-///
-/// Material design flat buttons have an all-caps label, some internal padding,
-/// and some defined dimensions. To have a part of your application be
-/// interactive, with ink splashes, without also committing to these stylistic
-/// choices, consider using [InkWell] instead.
-///
-/// If the [onPressed] and [onLongPress] callbacks are null, then this button will be disabled,
-/// will not react to touch, and will be colored as specified by
-/// the [disabledColor] property instead of the [color] property. If you are
-/// trying to change the button's [color] and it is not having any effect, check
-/// that you are passing a non-null [onPressed] handler.
-///
-/// Flat buttons have a minimum size of 88.0 by 36.0 which can be overridden
-/// with [ButtonTheme].
-///
-/// The [clipBehavior] argument must not be null.
-///
-/// {@tool snippet}
-///
-/// This example shows a simple [FlatButton].
-///
-/// ![A simple FlatButton](https://flutter.github.io/assets-for-api-docs/assets/material/flat_button.png)
-///
-/// ```dart
-/// FlatButton(
-///   onPressed: () {
-///     /*...*/
-///   },
-///   child: Text(
-///     "Flat Button",
-///   ),
-/// )
-/// ```
-/// {@end-tool}
-///
-/// {@tool snippet}
-///
-/// This example shows a [FlatButton] that is normally white-on-blue,
-/// with splashes rendered in a different shade of blue.
-/// It turns black-on-grey when disabled.
-/// The button has 8px of padding on each side, and the text is 20px high.
-///
-/// ![A FlatButton with white text on a blue background](https://flutter.github.io/assets-for-api-docs/assets/material/flat_button_properties.png)
-///
-/// ```dart
-/// FlatButton(
-///   color: Colors.blue,
-///   textColor: Colors.white,
-///   disabledColor: Colors.grey,
-///   disabledTextColor: Colors.black,
-///   padding: EdgeInsets.all(8.0),
-///   splashColor: Colors.blueAccent,
-///   onPressed: () {
-///     /*...*/
-///   },
-///   child: Text(
-///     "Flat Button",
-///     style: TextStyle(fontSize: 20.0),
-///   ),
-/// )
-/// ```
-/// {@end-tool}
-///
-/// See also:
-///
-///  * [RaisedButton], a filled button whose material elevates when pressed.
-///  * [DropdownButton], which offers the user a choice of a number of options.
-///  * [SimpleDialogOption], which is used in [SimpleDialog]s.
-///  * [IconButton], to create buttons that just contain icons.
-///  * [InkWell], which implements the ink splash part of a flat button.
-///  * [RawMaterialButton], the widget this widget is based on.
-///  * <https://material.io/design/components/buttons.html>
-///  * Cookbook: [Build a form with validation](https://flutter.dev/docs/cookbook/forms/validation)
+@Deprecated(
+  'Use TextButton instead. See the migration guide in flutter.dev/go/material-button-migration-guide). '
+  'This feature was deprecated after v1.25.0-8.1.pre.'
+)
 class FlatButton extends MaterialButton {
   /// Create a simple text button.
   ///
diff --git a/packages/flutter/lib/src/material/outline_button.dart b/packages/flutter/lib/src/material/outline_button.dart
index 8f6713a..500dee8 100644
--- a/packages/flutter/lib/src/material/outline_button.dart
+++ b/packages/flutter/lib/src/material/outline_button.dart
@@ -24,64 +24,20 @@
 
 /// Similar to a [FlatButton] with a thin grey rounded rectangle border.
 ///
-/// ### This class is obsolete, please use [OutlinedButton] instead.
+/// ### This class is deprecated, please use [OutlinedButton] instead.
 ///
 /// FlatButton, RaisedButton, and OutlineButton have been replaced by
-/// TextButton, ElevatedButton, and OutlinedButton respectively.
+/// [TextButton], [ElevatedButton], and [OutlinedButton] respectively.
 /// ButtonTheme has been replaced by TextButtonTheme,
 /// ElevatedButtonTheme, and OutlinedButtonTheme. The original classes
-/// will be deprecated soon, please migrate code that uses them.
+/// will eventually be removed, please migrate code that uses them.
 /// There's a detailed migration guide for the new button and button
 /// theme classes in
 /// [flutter.dev/go/material-button-migration-guide](https://flutter.dev/go/material-button-migration-guide).
-///
-/// The outline button's border shape is defined by [shape]
-/// and its appearance is defined by [borderSide], [disabledBorderColor],
-/// and [highlightedBorderColor]. By default the border is a one pixel
-/// wide grey rounded rectangle that does not change when the button is
-/// pressed or disabled. By default the button's background is transparent.
-///
-/// If the [onPressed] or [onLongPress] callbacks are null, then the button will be disabled and by
-/// default will resemble a flat button in the [disabledColor].
-///
-/// The button's [highlightElevation], which defines the size of the
-/// drop shadow when the button is pressed, is 0.0 (no shadow) by default.
-/// If [highlightElevation] is given a value greater than 0.0 then the button
-/// becomes a cross between [RaisedButton] and [FlatButton]: a bordered
-/// button whose elevation increases and whose background becomes opaque
-/// when the button is pressed.
-///
-/// If you want an ink-splash effect for taps, but don't want to use a button,
-/// consider using [InkWell] directly.
-///
-/// Outline buttons have a minimum size of 88.0 by 36.0 which can be overridden
-/// with [ButtonTheme].
-///
-/// {@tool dartpad --template=stateless_widget_scaffold_center}
-///
-/// Here is an example of a basic [OutlineButton].
-///
-/// ```dart
-///   Widget build(BuildContext context) {
-///     return OutlineButton(
-///       onPressed: () {
-///         print('Received click');
-///       },
-///       child: Text('Click Me'),
-///     );
-///   }
-/// ```
-/// {@end-tool}
-///
-/// See also:
-///
-///  * [RaisedButton], a filled material design button with a shadow.
-///  * [FlatButton], a material design button without a shadow.
-///  * [DropdownButton], a button that shows options to select from.
-///  * [FloatingActionButton], the round button in material applications.
-///  * [IconButton], to create buttons that just contain icons.
-///  * [InkWell], which implements the ink splash part of a flat button.
-///  * <https://material.io/design/components/buttons.html>
+@Deprecated(
+  'Use OutlinedButton instead. See the migration guide in flutter.dev/go/material-button-migration-guide). '
+  'This feature was deprecated after v1.25.0-8.1.pre.'
+)
 class OutlineButton extends MaterialButton {
   /// Create an outline button.
   ///
diff --git a/packages/flutter/lib/src/material/raised_button.dart b/packages/flutter/lib/src/material/raised_button.dart
index e214ab8..26fd5e1 100644
--- a/packages/flutter/lib/src/material/raised_button.dart
+++ b/packages/flutter/lib/src/material/raised_button.dart
@@ -12,105 +12,22 @@
 import 'theme.dart';
 import 'theme_data.dart';
 
-/// A material design "raised button".
+/// A Material Design "raised button".
 ///
-/// ### This class is obsolete, please use [ElevatedButton] instead.
+/// ### This class is deprecated, please use [ElevatedButton] instead.
 ///
 /// FlatButton, RaisedButton, and OutlineButton have been replaced by
-/// TextButton, ElevatedButton, and OutlinedButton respectively.
-/// ButtonTheme has been replaced by TextButtonTheme,
-/// ElevatedButtonTheme, and OutlinedButtonTheme. The original classes
-/// will be deprecated soon, please migrate code that uses them.
+/// [TextButton], [ElevatedButton], and [OutlinedButton] respectively.
+/// ButtonTheme has been replaced by [TextButtonTheme],
+/// [ElevatedButtonTheme], and [OutlinedButtonTheme]. The original classes
+/// will eventually be removed, please migrate code that uses them.
 /// There's a detailed migration guide for the new button and button
 /// theme classes in
 /// [flutter.dev/go/material-button-migration-guide](https://flutter.dev/go/material-button-migration-guide).
-///
-/// A raised button is based on a [Material] widget whose [Material.elevation]
-/// increases when the button is pressed.
-///
-/// Use raised buttons to add dimension to otherwise mostly flat layouts, e.g.
-/// in long busy lists of content, or in wide spaces. Avoid using raised buttons
-/// on already-raised content such as dialogs or cards.
-///
-/// If [onPressed] and [onLongPress] callbacks are null, then the button will be disabled and by
-/// default will resemble a flat button in the [disabledColor]. If you are
-/// trying to change the button's [color] and it is not having any effect, check
-/// that you are passing a non-null [onPressed] or [onLongPress] callbacks.
-///
-/// If you want an ink-splash effect for taps, but don't want to use a button,
-/// consider using [InkWell] directly.
-///
-/// Raised buttons have a minimum size of 88.0 by 36.0 which can be overridden
-/// with [ButtonTheme].
-///
-/// {@tool dartpad --template=stateless_widget_scaffold}
-///
-/// This sample shows how to render a disabled RaisedButton, an enabled RaisedButton
-/// and lastly a RaisedButton with gradient background.
-///
-/// ![Three raised buttons, one enabled, another disabled, and the last one
-/// styled with a blue gradient background](https://flutter.github.io/assets-for-api-docs/assets/material/raised_button.png)
-///
-/// ```dart
-/// Widget build(BuildContext context) {
-///   return Center(
-///     child: Column(
-///       mainAxisSize: MainAxisSize.min,
-///       children: <Widget>[
-///         const RaisedButton(
-///           onPressed: null,
-///           child: Text(
-///             'Disabled Button',
-///             style: TextStyle(fontSize: 20)
-///           ),
-///         ),
-///         const SizedBox(height: 30),
-///         RaisedButton(
-///           onPressed: () {},
-///           child: const Text(
-///             'Enabled Button',
-///             style: TextStyle(fontSize: 20)
-///           ),
-///         ),
-///         const SizedBox(height: 30),
-///         RaisedButton(
-///           onPressed: () {},
-///           textColor: Colors.white,
-///           padding: const EdgeInsets.all(0.0),
-///           child: Container(
-///             decoration: const BoxDecoration(
-///               gradient: LinearGradient(
-///                 colors: <Color>[
-///                   Color(0xFF0D47A1),
-///                   Color(0xFF1976D2),
-///                   Color(0xFF42A5F5),
-///                 ],
-///               ),
-///             ),
-///             padding: const EdgeInsets.all(10.0),
-///             child: const Text(
-///               'Gradient Button',
-///               style: TextStyle(fontSize: 20)
-///             ),
-///           ),
-///         ),
-///       ],
-///     ),
-///   );
-/// }
-/// ```
-/// {@end-tool}
-///
-/// See also:
-///
-///  * [FlatButton], a material design button without a shadow.
-///  * [DropdownButton], a button that shows options to select from.
-///  * [FloatingActionButton], the round button in material applications.
-///  * [IconButton], to create buttons that just contain icons.
-///  * [InkWell], which implements the ink splash part of a flat button.
-///  * [RawMaterialButton], the widget this widget is based on.
-///  * <https://material.io/design/components/buttons.html>
-///  * Cookbook: [Build a form with validation](https://flutter.dev/docs/cookbook/forms/validation)
+@Deprecated(
+  'Use ElevatedButton instead. See the migration guide in flutter.dev/go/material-button-migration-guide). '
+  'This feature was deprecated after v1.25.0-8.1.pre.'
+)
 class RaisedButton extends MaterialButton {
   /// Create a filled button.
   ///
diff --git a/packages/flutter/lib/src/widgets/basic.dart b/packages/flutter/lib/src/widgets/basic.dart
index 343b911..92d0da0 100644
--- a/packages/flutter/lib/src/widgets/basic.dart
+++ b/packages/flutter/lib/src/widgets/basic.dart
@@ -2787,7 +2787,7 @@
 ///         ),
 ///       ),
 ///       Text('Flutter logo is offstage: $_offstage'),
-///       RaisedButton(
+///       ElevatedButton(
 ///         child: Text('Toggle Offstage Value'),
 ///         onPressed: () {
 ///           setState(() {
@@ -2796,7 +2796,7 @@
 ///         },
 ///       ),
 ///       if (_offstage)
-///         RaisedButton(
+///         ElevatedButton(
 ///           child: Text('Get Flutter Logo size'),
 ///           onPressed: () {
 ///             ScaffoldMessenger.of(context).showSnackBar(
diff --git a/packages/flutter/test/cupertino/route_test.dart b/packages/flutter/test/cupertino/route_test.dart
index ccf2cab..5cbf1f9 100644
--- a/packages/flutter/test/cupertino/route_test.dart
+++ b/packages/flutter/test/cupertino/route_test.dart
@@ -1650,7 +1650,7 @@
     await tester.pumpWidget(CupertinoApp(
       home: Center(
         child: Builder(builder: (BuildContext context) {
-          return RaisedButton(
+          return ElevatedButton(
             child: const Text('Home'),
             onPressed: () {
               navigator = Navigator.of(context);
@@ -1663,7 +1663,7 @@
     ));
 
     final TestGesture gesture = await tester.createGesture();
-    await gesture.down(tester.getCenter(find.byType(RaisedButton)));
+    await gesture.down(tester.getCenter(find.byType(ElevatedButton)));
     await gesture.up();
 
     await tester.pumpAndSettle();
diff --git a/packages/flutter/test/material/tabs_test.dart b/packages/flutter/test/material/tabs_test.dart
index 99d8df6..4c861cd 100644
--- a/packages/flutter/test/material/tabs_test.dart
+++ b/packages/flutter/test/material/tabs_test.dart
@@ -3119,12 +3119,12 @@
             return Scaffold(
               appBar: AppBar(
                 actions: <Widget>[
-                  FlatButton(
+                  TextButton(
                     key: const Key('Add tab'),
                     child: const Text('Add tab'),
                     onPressed: () => _onTabAdd(setState),
                   ),
-                  FlatButton(
+                  TextButton(
                     key: const Key('Remove tab'),
                     child: const Text('Remove tab'),
                     onPressed: () => _onTabRemove(setState),
diff --git a/packages/flutter/test/widgets/heroes_test.dart b/packages/flutter/test/widgets/heroes_test.dart
index 2b73917..22d4a6d 100644
--- a/packages/flutter/test/widgets/heroes_test.dart
+++ b/packages/flutter/test/widgets/heroes_test.dart
@@ -2651,7 +2651,7 @@
             ),
             Builder(
               builder: (BuildContext context) {
-                return FlatButton(
+                return TextButton(
                   child: const Text('push'),
                   onPressed: () {
                     Navigator.push(context, PageRouteBuilder<void>(
@@ -2723,7 +2723,7 @@
             ),
             Builder(
               builder: (BuildContext context) {
-                return FlatButton(
+                return TextButton(
                   child: const Text('push'),
                   onPressed: () {
                     Navigator.push(context, PageRouteBuilder<void>(
diff --git a/packages/flutter/test/widgets/mouse_region_test.dart b/packages/flutter/test/widgets/mouse_region_test.dart
index 02a379c..dbaa2ae 100644
--- a/packages/flutter/test/widgets/mouse_region_test.dart
+++ b/packages/flutter/test/widgets/mouse_region_test.dart
@@ -1738,7 +1738,7 @@
         child: Draggable<int>(
           feedback: Container(width: 20, height: 20, color: Colors.blue),
           childWhenDragging: Container(width: 20, height: 20, color: Colors.yellow),
-          child: RaisedButton(child: const Text('Drag me'), onPressed: (){}),
+          child: ElevatedButton(child: const Text('Drag me'), onPressed: (){}),
         ),
       ),
     ));
