@@ -11,6 +11,7 @@ import 'package:flutter/rendering.dart';
1111import 'package:flutter/services.dart' ;
1212
1313import 'adaptive_text_selection_toolbar.dart' ;
14+ import 'color_scheme.dart' ;
1415import 'colors.dart' ;
1516import 'debug.dart' ;
1617import 'desktop_text_selection.dart' ;
@@ -1191,6 +1192,22 @@ class _TextFieldState extends State<TextField> with RestorationMixin implements
11911192 }
11921193 // AutofillClient implementation end.
11931194
1195+ Set <MaterialState > get _materialState {
1196+ return < MaterialState > {
1197+ if (! _isEnabled) MaterialState .disabled,
1198+ if (_isHovering) MaterialState .hovered,
1199+ if (_effectiveFocusNode.hasFocus) MaterialState .focused,
1200+ if (_hasError) MaterialState .error,
1201+ };
1202+ }
1203+
1204+ TextStyle _getInputStyleForState (TextStyle style) {
1205+ final ThemeData theme = Theme .of (context);
1206+ final TextStyle stateStyle = MaterialStateProperty .resolveAs (theme.useMaterial3 ? _m3StateInputStyle (context)! : _m2StateInputStyle (context)! , _materialState);
1207+ final TextStyle providedStyle = MaterialStateProperty .resolveAs (style, _materialState);
1208+ return providedStyle.merge (stateStyle);
1209+ }
1210+
11941211 @override
11951212 Widget build (BuildContext context) {
11961213 assert (debugCheckHasMaterial (context));
@@ -1204,7 +1221,7 @@ class _TextFieldState extends State<TextField> with RestorationMixin implements
12041221
12051222 final ThemeData theme = Theme .of (context);
12061223 final DefaultSelectionStyle selectionStyle = DefaultSelectionStyle .of (context);
1207- final TextStyle style = (theme.useMaterial3 ? _m3InputStyle (context) : theme.textTheme.titleMedium! ).merge (widget.style);
1224+ final TextStyle style = _getInputStyleForState (theme.useMaterial3 ? _m3InputStyle (context) : theme.textTheme.titleMedium! ).merge (widget.style);
12081225 final Brightness keyboardAppearance = widget.keyboardAppearance ?? theme.brightness;
12091226 final TextEditingController controller = _effectiveController;
12101227 final FocusNode focusNode = _effectiveFocusNode;
@@ -1402,12 +1419,7 @@ class _TextFieldState extends State<TextField> with RestorationMixin implements
14021419 }
14031420 final MouseCursor effectiveMouseCursor = MaterialStateProperty .resolveAs <MouseCursor >(
14041421 widget.mouseCursor ?? MaterialStateMouseCursor .textable,
1405- < MaterialState > {
1406- if (! _isEnabled) MaterialState .disabled,
1407- if (_isHovering) MaterialState .hovered,
1408- if (focusNode.hasFocus) MaterialState .focused,
1409- if (_hasError) MaterialState .error,
1410- },
1422+ _materialState,
14111423 );
14121424
14131425 final int ? semanticsMaxValueLength;
@@ -1453,6 +1465,14 @@ class _TextFieldState extends State<TextField> with RestorationMixin implements
14531465 }
14541466}
14551467
1468+ TextStyle ? _m2StateInputStyle (BuildContext context) => MaterialStateTextStyle .resolveWith ((Set <MaterialState > states) {
1469+ final ThemeData theme = Theme .of (context);
1470+ if (states.contains (MaterialState .disabled)) {
1471+ return TextStyle (color: theme.disabledColor);
1472+ }
1473+ return TextStyle (color: theme.textTheme.titleMedium? .color);
1474+ });
1475+
14561476TextStyle _m2CounterErrorStyle (BuildContext context) =>
14571477 Theme .of (context).textTheme.bodySmall! .copyWith (color: Theme .of (context).colorScheme.error);
14581478
@@ -1465,6 +1485,13 @@ TextStyle _m2CounterErrorStyle(BuildContext context) =>
14651485
14661486// Token database version: v0_162
14671487
1488+ TextStyle ? _m3StateInputStyle (BuildContext context) => MaterialStateTextStyle .resolveWith ((Set <MaterialState > states) {
1489+ if (states.contains (MaterialState .disabled)) {
1490+ return TextStyle (color: Theme .of (context).textTheme.bodyLarge! .color? .withOpacity (0.38 ));
1491+ }
1492+ return TextStyle (color: Theme .of (context).textTheme.bodyLarge! .color);
1493+ });
1494+
14681495TextStyle _m3InputStyle (BuildContext context) => Theme .of (context).textTheme.bodyLarge! ;
14691496
14701497TextStyle _m3CounterErrorStyle (BuildContext context) =>
0 commit comments