-
Notifications
You must be signed in to change notification settings - Fork 27.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
TextField and TextFormField can use a MaterialStatesController #133977
Conversation
/// [MaterialStatesController] to which they've added listeners. | ||
/// They can also update the controller's [MaterialStatesController.value] | ||
/// however, this may only be done when it's safe to call | ||
/// [State.setState], like in an event handler. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
(what's the difference between this one and the existing doc template for this in ink_well.dart
?)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This one just makes sure to point out the states reported by TextField
. { MaterialState.disabled, MaterialState.hovered, MaterialState.error, MaterialState.focused }
. ink_well.dart
points out MaterialState.pressed
which TextField
does not report at the moment.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: consider linking the part of the material state controller doc that explains that this is not the intrinsic states and if you change the value, future intrinsic states change may overwrite the change?(
} | ||
|
||
// Material states controller. | ||
MaterialStatesController? _internalStatesController; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do we actually need an internal states controller if the user didn't supply one? The reason we're adding it is that users want to add listeners to it right?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That is a good point we are currently not using it internally. We do keep track of our _materialState
using a private member
flutter/packages/flutter/lib/src/material/text_field.dart
Lines 1215 to 1222 in ff5b5b5
Set<MaterialState> get _materialState { | |
return <MaterialState>{ | |
if (!_isEnabled) MaterialState.disabled, | |
if (_isHovering) MaterialState.hovered, | |
if (_effectiveFocusNode.hasFocus) MaterialState.focused, | |
if (_hasError) MaterialState.error, | |
}; | |
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The purpose of this change is to let developers monitor material states changes, but changing the material states from outside of the TextField
class shouldn't be allowed, since the source of the truth is TextFieldState
I think?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It does makes sense that TextField would be the source of truth for its material state, but I also see the use-case for being able to programmatically update a TextField's material state to add support for more states.
import 'package:flutter/material.dart';
void main() {
runApp(const MaterialApp(home: Home()));
}
class PressedInputField extends StatefulWidget {
const PressedInputField({
super.key,
this.style,
required this.pressed,
required this.onPressed,
required this.onReleased,
});
final bool pressed;
final TextStyle? style;
final VoidCallback? onPressed;
final VoidCallback? onReleased;
@override
State<PressedInputField> createState() => _PressedInputFieldState();
}
class _PressedInputFieldState extends State<PressedInputField> {
late final MaterialStatesController statesController;
final TextEditingController controller = TextEditingController(text: 'some text');
@override
void initState() {
super.initState();
statesController = MaterialStatesController(
<MaterialState>{if (widget.pressed) MaterialState.pressed});
}
@override
void dispose() {
statesController.dispose();
controller.dispose();
super.dispose();
}
@override
void didUpdateWidget(PressedInputField oldWidget) {
super.didUpdateWidget(oldWidget);
if (widget.pressed != oldWidget.pressed) {
statesController.update(MaterialState.pressed, widget.pressed);
}
}
@override
Widget build(BuildContext context) {
return Listener(
behavior: HitTestBehavior.translucent,
onPointerDown: (PointerDownEvent event) {
widget.onPressed?.call();
},
child: TextField(
controller: controller,
statesController: statesController,
style: widget.style,
onTap: () {
widget.onReleased?.call();
},
),
);
}
}
class Home extends StatefulWidget {
const Home({super.key});
@override
State<Home> createState() => _HomeState();
}
class _HomeState extends State<Home> {
bool pressed = false;
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: PressedInputField(
pressed: pressed,
style: MaterialStateTextStyle.resolveWith((Set<MaterialState> states) {
if (states.contains(MaterialState.pressed)) {
return const TextStyle(color: Colors.white, backgroundColor: Colors.indigo);
}
return const TextStyle(color: Colors.teal);
}),
onPressed: () {
setState(() {
pressed = !pressed;
});
},
onReleased: () {
setState(() {
pressed = !pressed;
});
}
),
),
);
}
}
I'm okay with holding off on that functionality until it is requested, but I also think when a user updates state through the controller using _myController.update(MaterialState.pressed, true)
they might expect that the receiving widget reflects the value change, similar to other controllers like TextEditingController
and doing _myController.value = myNewValue
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
when a user updates state through the controller using _myController.update(MaterialState.pressed, true) they might expect that the receiving widget reflects the value change, similar to other controllers like TextEditingController and doing _myController.value = myNewValue.
Do you mean if a TextField
has focus but if the user calls update(.focused, false)
on the controller then the text field should tell its focus node to unfocus? That sounds pretty strange to me.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If the user adds the focused MaterialState after the component loses focus, then the component's visuals will make it appear that the component has the focus.
And if the component regains focus and loses focus again? Should the visual state of the component update as the intrinsic state of the component changes?
- If the answer is no then it sounds like we need an additional switch that the user can turn on to suppress the intrinsic state changes from affecting the visual state
- otherwise the controller will be pretty hard to use on a
TextField
. For instance the app user can switch the focus to a different component, and to obscure the underlying state change I guess you'll have to listen to the state controller and change the material state back? That usually won't happen until the next frame. Average users may not notice that but that can make tests flaky.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If you really wanted to prevent the MaterialStatesController from tracking the textfield's intrinsic focus (or whatever) state you could override the controller's update method. That said, this isn't a use case that has ever come up or seems worth designing for.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah ok makes sense. I guess this should be in the documentation?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, it's not explained well (at all) and some examples are needed. If you create an issue, you can assign it to me.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Updated the MaterialStatesController docs in #134592
77c7f6a
to
c8261ad
Compare
/// [MaterialStatesController] to which they've added listeners. | ||
/// They can also update the controller's [MaterialStatesController.value] | ||
/// however, this may only be done when it's safe to call | ||
/// [State.setState], like in an event handler. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: consider linking the part of the material state controller doc that explains that this is not the intrinsic states and if you change the value, future intrinsic states change may overwrite the change?(
} | ||
_statesController.update(MaterialState.disabled, !_isEnabled); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
why does it only update .disabled
but not the other properties?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Here and didUpdateWidget
seem like the only reasonable places to listen for changes in _isEnabled
, while the other state properties like focus
(listens to changes in FocusNode
) and hover
(listens to MouseRegion
callbacks) actively listen for changes. I'll also initialize the error state here.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Focus is edge-triggered so you have to set the correct initial value otherwise it won't reflect the correct state until the next time you get notified of a focus state change right? The TextField can be given a FocusNode
that may or may not have the focus when initState
is called.
298a158
to
27bea0c
Compare
This pull request executed golden file tests, but it has not been updated in a while (20+ days). Test results from Gold expire after as many days, so this pull request will need to be updated with a fresh commit in order to get results from Gold. For more guidance, visit Writing a golden file test for Reviewers: Read the Tree Hygiene page and make sure this patch meets those guidelines before LGTMing. |
What is the state of this PR? Are there intentions to take this further? |
@HappyEmu Yeah was working on other issues. I'll try to get this un-stale soon. |
84f4e9a
to
0b6a07a
Compare
_internalStatesController = null; | ||
} | ||
_initStatesController(); | ||
_updateMaterialErrorState(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
consider always updating every state in _stateController
here in didUpdateWidget
. I think that will make it easier to read.
@@ -1048,10 +1073,18 @@ class _TextFieldState extends State<TextField> with RestorationMixin implements | |||
} | |||
} | |||
|
|||
void _updateMaterialErrorState() { | |||
if (_hasError != _hadError) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The check and the instance variable don't seem to be necessary?
@override | ||
void didChangeDependencies() { | ||
super.didChangeDependencies(); | ||
_effectiveFocusNode.canRequestFocus = _canRequestFocus; | ||
_updateMaterialErrorState(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
_hasError
doesn't seem to be depending on any inherited widgets?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The RestorableTextEditingController
doesn't seem to finish registering the controller by the time _hasError
is called which also calls _hasIntrinsicError
so when effectiveController.value
is accessed there is an assert triggered regarding the controller not being registered for state restoration yet.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You mean it's preventing the material state controller from being fully set-up in initState
? Can you make the initialization lazy then?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Making the initialization lazy didn't seem to help, I tried changing the MaterialStatesController to late
. Instead I changed _hasIntrinsicError
to take into account if there is a pending restore.
0fe9246
to
46f1168
Compare
6c595fa
to
a6f5170
Compare
Roll Flutter from 6bf3ccd to 5e5b529 (58 revisions) flutter/flutter@6bf3ccd...5e5b529 2023-11-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from 60b963930202 to 222beb28a8eb (2 revisions) (flutter/flutter#139242) 2023-11-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from eebbe7e15c7d to 60b963930202 (2 revisions) (flutter/flutter#139237) 2023-11-29 engine-flutter-autoroll@skia.org Roll Packages from 3c05466 to e4aaba8 (5 revisions) (flutter/flutter#139232) 2023-11-29 katelovett@google.com Update VelocityTracker (4) (flutter/flutter#139166) 2023-11-29 katelovett@google.com Analyze against using Stopwatches in the framework (flutter/flutter#138507) 2023-11-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from ecc9c7b6be7d to eebbe7e15c7d (1 revision) (flutter/flutter#139225) 2023-11-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from 28aae2d29822 to ecc9c7b6be7d (1 revision) (flutter/flutter#139210) 2023-11-29 dumazy@gmail.com Improve documentation of CardTheme.shape (flutter/flutter#139096) 2023-11-29 ian@hixie.ch Simplify devicelab logic and fix tests (flutter/flutter#139122) 2023-11-29 vbacik.10@gmail.com implemented leadingWidth and automaticallyImplyLeading options (flutter/flutter#136165) 2023-11-29 rmolivares@renzo-olivares.dev TextField and TextFormField can use a MaterialStatesController (flutter/flutter#133977) 2023-11-29 mateusfccp@gmail.com Provide parameter to Icon and IconThemeData for they to consider the context's text scaler (flutter/flutter#135708) 2023-11-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from be4d7c8b760c to 28aae2d29822 (1 revision) (flutter/flutter#139204) 2023-11-29 31859944+LongCatIsLooong@users.noreply.github.com Update `ButtonStyleButton.scaledPadding` documentation. Migrate callers in flutter/flutter (flutter/flutter#139014) 2023-11-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from de99c71c598f to be4d7c8b760c (1 revision) (flutter/flutter#139199) 2023-11-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from 9a840e8dba40 to de99c71c598f (2 revisions) (flutter/flutter#139195) 2023-11-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from fbb2b1e880fa to 9a840e8dba40 (1 revision) (flutter/flutter#139192) 2023-11-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from 4beaa1195b74 to fbb2b1e880fa (1 revision) (flutter/flutter#139191) 2023-11-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from 570fec4fa92c to 4beaa1195b74 (3 revisions) (flutter/flutter#139190) 2023-11-29 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Reland Add platform view wide gamut test" (flutter/flutter#139189) 2023-11-28 godofredoc@google.com Move analysis test to shard tests. (flutter/flutter#139161) 2023-11-28 pateltirth454@gmail.com Write Tests for API Examples of `snack_bar.0`, `elevated_button.0`, `stepper.0`, `radio.0`, `filled_button.0`, `outlined_button.0` & `card.0` (flutter/flutter#138987) 2023-11-28 nathan.wilson1232@gmail.com Implement `switch` expressions in `dev/` (flutter/flutter#139048) 2023-11-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from 01fcec7214db to 570fec4fa92c (2 revisions) (flutter/flutter#139178) 2023-11-28 gregor@zurowski.org Fix comment (flutter/flutter#138973) 2023-11-28 ybz975218925@gmail.com Added some documentation for OverlayPortal (flutter/flutter#138934) 2023-11-28 69699209+gbtb16@users.noreply.github.com feature(table-widget): Added intrinsicHeight to TableCellVerticalAlignment enum. (flutter/flutter#130264) 2023-11-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from 97ede154dcd8 to 01fcec7214db (1 revision) (flutter/flutter#139172) 2023-11-28 31859944+LongCatIsLooong@users.noreply.github.com Ensure Icon vertically centers its icon glyph. (flutter/flutter#138937) 2023-11-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from fd3a33f8b239 to 97ede154dcd8 (2 revisions) (flutter/flutter#139168) 2023-11-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from d375d5b95d59 to fd3a33f8b239 (2 revisions) (flutter/flutter#139163) 2023-11-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from e4b18fa3661e to d375d5b95d59 (2 revisions) (flutter/flutter#139157) 2023-11-28 pateltirth454@gmail.com Added keyboardType & textInputAction props to SearchBar, SearchAnchor & SearchAnchor.bar (flutter/flutter#138553) 2023-11-28 jim@kalafut.net Fix header formatting typo in PopupMenuButton docs (flutter/flutter#139084) 2023-11-28 katelovett@google.com Fix turbulence seed for all tests with ink sparkles (flutter/flutter#138757) 2023-11-28 15619084+vashworth@users.noreply.github.com Renable macOS 13 tests (flutter/flutter#139083) 2023-11-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from 8715e9b9119d to e4b18fa3661e (1 revision) (flutter/flutter#139142) 2023-11-28 engine-flutter-autoroll@skia.org Roll Packages from e774e88 to 3c05466 (2 revisions) (flutter/flutter#139140) 2023-11-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from 6ad827e9a71b to 8715e9b9119d (1 revision) (flutter/flutter#139136) 2023-11-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from c18d3df967dc to 6ad827e9a71b (1 revision) (flutter/flutter#139135) 2023-11-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from 1caa7478db0d to c18d3df967dc (1 revision) (flutter/flutter#139133) 2023-11-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from 4f217e1f9afe to 1caa7478db0d (1 revision) (flutter/flutter#139129) 2023-11-28 leroux_bruno@yahoo.fr Fix textScalerOf and maybeTextScalerOf documentations (flutter/flutter#139123) 2023-11-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from c25cc65720de to 4f217e1f9afe (1 revision) (flutter/flutter#139126) 2023-11-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from 3381d3ff0df7 to c25cc65720de (1 revision) (flutter/flutter#139121) 2023-11-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from 96137d05fabc to 3381d3ff0df7 (4 revisions) (flutter/flutter#139119) ...
Roll Flutter from 6bf3ccd to 5e5b529 (58 revisions) flutter/flutter@6bf3ccd...5e5b529 2023-11-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from 60b963930202 to 222beb28a8eb (2 revisions) (flutter/flutter#139242) 2023-11-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from eebbe7e15c7d to 60b963930202 (2 revisions) (flutter/flutter#139237) 2023-11-29 engine-flutter-autoroll@skia.org Roll Packages from 3c05466 to e4aaba8 (5 revisions) (flutter/flutter#139232) 2023-11-29 katelovett@google.com Update VelocityTracker (4) (flutter/flutter#139166) 2023-11-29 katelovett@google.com Analyze against using Stopwatches in the framework (flutter/flutter#138507) 2023-11-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from ecc9c7b6be7d to eebbe7e15c7d (1 revision) (flutter/flutter#139225) 2023-11-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from 28aae2d29822 to ecc9c7b6be7d (1 revision) (flutter/flutter#139210) 2023-11-29 dumazy@gmail.com Improve documentation of CardTheme.shape (flutter/flutter#139096) 2023-11-29 ian@hixie.ch Simplify devicelab logic and fix tests (flutter/flutter#139122) 2023-11-29 vbacik.10@gmail.com implemented leadingWidth and automaticallyImplyLeading options (flutter/flutter#136165) 2023-11-29 rmolivares@renzo-olivares.dev TextField and TextFormField can use a MaterialStatesController (flutter/flutter#133977) 2023-11-29 mateusfccp@gmail.com Provide parameter to Icon and IconThemeData for they to consider the context's text scaler (flutter/flutter#135708) 2023-11-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from be4d7c8b760c to 28aae2d29822 (1 revision) (flutter/flutter#139204) 2023-11-29 31859944+LongCatIsLooong@users.noreply.github.com Update `ButtonStyleButton.scaledPadding` documentation. Migrate callers in flutter/flutter (flutter/flutter#139014) 2023-11-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from de99c71c598f to be4d7c8b760c (1 revision) (flutter/flutter#139199) 2023-11-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from 9a840e8dba40 to de99c71c598f (2 revisions) (flutter/flutter#139195) 2023-11-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from fbb2b1e880fa to 9a840e8dba40 (1 revision) (flutter/flutter#139192) 2023-11-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from 4beaa1195b74 to fbb2b1e880fa (1 revision) (flutter/flutter#139191) 2023-11-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from 570fec4fa92c to 4beaa1195b74 (3 revisions) (flutter/flutter#139190) 2023-11-29 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Reland Add platform view wide gamut test" (flutter/flutter#139189) 2023-11-28 godofredoc@google.com Move analysis test to shard tests. (flutter/flutter#139161) 2023-11-28 pateltirth454@gmail.com Write Tests for API Examples of `snack_bar.0`, `elevated_button.0`, `stepper.0`, `radio.0`, `filled_button.0`, `outlined_button.0` & `card.0` (flutter/flutter#138987) 2023-11-28 nathan.wilson1232@gmail.com Implement `switch` expressions in `dev/` (flutter/flutter#139048) 2023-11-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from 01fcec7214db to 570fec4fa92c (2 revisions) (flutter/flutter#139178) 2023-11-28 gregor@zurowski.org Fix comment (flutter/flutter#138973) 2023-11-28 ybz975218925@gmail.com Added some documentation for OverlayPortal (flutter/flutter#138934) 2023-11-28 69699209+gbtb16@users.noreply.github.com feature(table-widget): Added intrinsicHeight to TableCellVerticalAlignment enum. (flutter/flutter#130264) 2023-11-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from 97ede154dcd8 to 01fcec7214db (1 revision) (flutter/flutter#139172) 2023-11-28 31859944+LongCatIsLooong@users.noreply.github.com Ensure Icon vertically centers its icon glyph. (flutter/flutter#138937) 2023-11-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from fd3a33f8b239 to 97ede154dcd8 (2 revisions) (flutter/flutter#139168) 2023-11-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from d375d5b95d59 to fd3a33f8b239 (2 revisions) (flutter/flutter#139163) 2023-11-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from e4b18fa3661e to d375d5b95d59 (2 revisions) (flutter/flutter#139157) 2023-11-28 pateltirth454@gmail.com Added keyboardType & textInputAction props to SearchBar, SearchAnchor & SearchAnchor.bar (flutter/flutter#138553) 2023-11-28 jim@kalafut.net Fix header formatting typo in PopupMenuButton docs (flutter/flutter#139084) 2023-11-28 katelovett@google.com Fix turbulence seed for all tests with ink sparkles (flutter/flutter#138757) 2023-11-28 15619084+vashworth@users.noreply.github.com Renable macOS 13 tests (flutter/flutter#139083) 2023-11-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from 8715e9b9119d to e4b18fa3661e (1 revision) (flutter/flutter#139142) 2023-11-28 engine-flutter-autoroll@skia.org Roll Packages from e774e88 to 3c05466 (2 revisions) (flutter/flutter#139140) 2023-11-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from 6ad827e9a71b to 8715e9b9119d (1 revision) (flutter/flutter#139136) 2023-11-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from c18d3df967dc to 6ad827e9a71b (1 revision) (flutter/flutter#139135) 2023-11-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from 1caa7478db0d to c18d3df967dc (1 revision) (flutter/flutter#139133) 2023-11-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from 4f217e1f9afe to 1caa7478db0d (1 revision) (flutter/flutter#139129) 2023-11-28 leroux_bruno@yahoo.fr Fix textScalerOf and maybeTextScalerOf documentations (flutter/flutter#139123) 2023-11-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from c25cc65720de to 4f217e1f9afe (1 revision) (flutter/flutter#139126) 2023-11-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from 3381d3ff0df7 to c25cc65720de (1 revision) (flutter/flutter#139121) 2023-11-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from 96137d05fabc to 3381d3ff0df7 (4 revisions) (flutter/flutter#139119) ...
…er#133977) This change adds support for a `MaterialStatesController` in `TextField` and `TextFormField`. With this change a user can listen to `MaterialState` changes in an input field by passing a `MaterialStatesController` to `TextField` or `TextFormField`. Fixes flutter#133273
Roll Flutter from 6bf3ccd to 5e5b529 (58 revisions) flutter/flutter@6bf3ccd...5e5b529 2023-11-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from 60b963930202 to 222beb28a8eb (2 revisions) (flutter/flutter#139242) 2023-11-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from eebbe7e15c7d to 60b963930202 (2 revisions) (flutter/flutter#139237) 2023-11-29 engine-flutter-autoroll@skia.org Roll Packages from 3c05466 to e4aaba8 (5 revisions) (flutter/flutter#139232) 2023-11-29 katelovett@google.com Update VelocityTracker (4) (flutter/flutter#139166) 2023-11-29 katelovett@google.com Analyze against using Stopwatches in the framework (flutter/flutter#138507) 2023-11-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from ecc9c7b6be7d to eebbe7e15c7d (1 revision) (flutter/flutter#139225) 2023-11-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from 28aae2d29822 to ecc9c7b6be7d (1 revision) (flutter/flutter#139210) 2023-11-29 dumazy@gmail.com Improve documentation of CardTheme.shape (flutter/flutter#139096) 2023-11-29 ian@hixie.ch Simplify devicelab logic and fix tests (flutter/flutter#139122) 2023-11-29 vbacik.10@gmail.com implemented leadingWidth and automaticallyImplyLeading options (flutter/flutter#136165) 2023-11-29 rmolivares@renzo-olivares.dev TextField and TextFormField can use a MaterialStatesController (flutter/flutter#133977) 2023-11-29 mateusfccp@gmail.com Provide parameter to Icon and IconThemeData for they to consider the context's text scaler (flutter/flutter#135708) 2023-11-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from be4d7c8b760c to 28aae2d29822 (1 revision) (flutter/flutter#139204) 2023-11-29 31859944+LongCatIsLooong@users.noreply.github.com Update `ButtonStyleButton.scaledPadding` documentation. Migrate callers in flutter/flutter (flutter/flutter#139014) 2023-11-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from de99c71c598f to be4d7c8b760c (1 revision) (flutter/flutter#139199) 2023-11-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from 9a840e8dba40 to de99c71c598f (2 revisions) (flutter/flutter#139195) 2023-11-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from fbb2b1e880fa to 9a840e8dba40 (1 revision) (flutter/flutter#139192) 2023-11-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from 4beaa1195b74 to fbb2b1e880fa (1 revision) (flutter/flutter#139191) 2023-11-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from 570fec4fa92c to 4beaa1195b74 (3 revisions) (flutter/flutter#139190) 2023-11-29 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Reland Add platform view wide gamut test" (flutter/flutter#139189) 2023-11-28 godofredoc@google.com Move analysis test to shard tests. (flutter/flutter#139161) 2023-11-28 pateltirth454@gmail.com Write Tests for API Examples of `snack_bar.0`, `elevated_button.0`, `stepper.0`, `radio.0`, `filled_button.0`, `outlined_button.0` & `card.0` (flutter/flutter#138987) 2023-11-28 nathan.wilson1232@gmail.com Implement `switch` expressions in `dev/` (flutter/flutter#139048) 2023-11-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from 01fcec7214db to 570fec4fa92c (2 revisions) (flutter/flutter#139178) 2023-11-28 gregor@zurowski.org Fix comment (flutter/flutter#138973) 2023-11-28 ybz975218925@gmail.com Added some documentation for OverlayPortal (flutter/flutter#138934) 2023-11-28 69699209+gbtb16@users.noreply.github.com feature(table-widget): Added intrinsicHeight to TableCellVerticalAlignment enum. (flutter/flutter#130264) 2023-11-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from 97ede154dcd8 to 01fcec7214db (1 revision) (flutter/flutter#139172) 2023-11-28 31859944+LongCatIsLooong@users.noreply.github.com Ensure Icon vertically centers its icon glyph. (flutter/flutter#138937) 2023-11-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from fd3a33f8b239 to 97ede154dcd8 (2 revisions) (flutter/flutter#139168) 2023-11-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from d375d5b95d59 to fd3a33f8b239 (2 revisions) (flutter/flutter#139163) 2023-11-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from e4b18fa3661e to d375d5b95d59 (2 revisions) (flutter/flutter#139157) 2023-11-28 pateltirth454@gmail.com Added keyboardType & textInputAction props to SearchBar, SearchAnchor & SearchAnchor.bar (flutter/flutter#138553) 2023-11-28 jim@kalafut.net Fix header formatting typo in PopupMenuButton docs (flutter/flutter#139084) 2023-11-28 katelovett@google.com Fix turbulence seed for all tests with ink sparkles (flutter/flutter#138757) 2023-11-28 15619084+vashworth@users.noreply.github.com Renable macOS 13 tests (flutter/flutter#139083) 2023-11-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from 8715e9b9119d to e4b18fa3661e (1 revision) (flutter/flutter#139142) 2023-11-28 engine-flutter-autoroll@skia.org Roll Packages from e774e88 to 3c05466 (2 revisions) (flutter/flutter#139140) 2023-11-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from 6ad827e9a71b to 8715e9b9119d (1 revision) (flutter/flutter#139136) 2023-11-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from c18d3df967dc to 6ad827e9a71b (1 revision) (flutter/flutter#139135) 2023-11-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from 1caa7478db0d to c18d3df967dc (1 revision) (flutter/flutter#139133) 2023-11-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from 4f217e1f9afe to 1caa7478db0d (1 revision) (flutter/flutter#139129) 2023-11-28 leroux_bruno@yahoo.fr Fix textScalerOf and maybeTextScalerOf documentations (flutter/flutter#139123) 2023-11-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from c25cc65720de to 4f217e1f9afe (1 revision) (flutter/flutter#139126) 2023-11-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from 3381d3ff0df7 to c25cc65720de (1 revision) (flutter/flutter#139121) 2023-11-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from 96137d05fabc to 3381d3ff0df7 (4 revisions) (flutter/flutter#139119) ...
This change adds support for a
MaterialStatesController
inTextField
andTextFormField
. With this change a user can listen toMaterialState
changes in an input field by passing aMaterialStatesController
toTextField
orTextFormField
.Fixes #133273
Pre-launch Checklist
///
).