Skip to content
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

Merged
merged 20 commits into from
Nov 29, 2023

Conversation

Renzo-Olivares
Copy link
Contributor

@Renzo-Olivares Renzo-Olivares commented Sep 4, 2023

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 #133273

Pre-launch Checklist

  • I read the [Contributor Guide] and followed the process outlined there for submitting PRs.
  • I read the [Tree Hygiene] wiki page, which explains my responsibilities.
  • I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement].
  • I signed the [CLA].
  • I listed at least one issue that this PR fixes in the description above.
  • I updated/added relevant documentation (doc comments with ///).
  • I added new tests to check the change I am making, or this PR is [test-exempt].
  • All existing and new tests are passing.

@github-actions github-actions bot added a: text input Entering text in a text field or keyboard related problems framework flutter/packages/flutter repository. See also f: labels. f: material design flutter/packages/flutter/material repository. labels Sep 4, 2023
@Renzo-Olivares Renzo-Olivares marked this pull request as ready for review September 4, 2023 20:13
packages/flutter/lib/src/material/text_field.dart Outdated Show resolved Hide resolved
/// [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.
Copy link
Contributor

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?)

Copy link
Contributor Author

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.

Copy link
Contributor

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;
Copy link
Contributor

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?

Copy link
Contributor Author

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

Set<MaterialState> get _materialState {
return <MaterialState>{
if (!_isEnabled) MaterialState.disabled,
if (_isHovering) MaterialState.hovered,
if (_effectiveFocusNode.hasFocus) MaterialState.focused,
if (_hasError) MaterialState.error,
};
}
maybe we should just use the controller to track this in one place c1d4cdf.

Copy link
Contributor

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?

Copy link
Contributor Author

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.

Copy link
Contributor

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.

Copy link
Contributor

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.

Copy link
Contributor

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.

Copy link
Contributor

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?

Copy link
Contributor

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.

Copy link
Contributor

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

/// [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.
Copy link
Contributor

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);
Copy link
Contributor

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?

Copy link
Contributor Author

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.

Copy link
Contributor

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.

@HansMuller HansMuller reopened this Sep 13, 2023
@Renzo-Olivares Renzo-Olivares force-pushed the textfield-states branch 2 times, most recently from 298a158 to 27bea0c Compare September 19, 2023 19:52
Mairramer pushed a commit to Mairramer/flutter that referenced this pull request Oct 10, 2023
@flutter-dashboard
Copy link

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 package:flutter.

Reviewers: Read the Tree Hygiene page and make sure this patch meets those guidelines before LGTMing.

@HappyEmu
Copy link

HappyEmu commented Nov 7, 2023

What is the state of this PR? Are there intentions to take this further?

@Renzo-Olivares
Copy link
Contributor Author

@HappyEmu Yeah was working on other issues. I'll try to get this un-stale soon.

_internalStatesController = null;
}
_initStatesController();
_updateMaterialErrorState();
Copy link
Contributor

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) {
Copy link
Contributor

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();
Copy link
Contributor

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?

Copy link
Contributor Author

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.

Copy link
Contributor

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?

Copy link
Contributor Author

@Renzo-Olivares Renzo-Olivares Nov 28, 2023

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.

@Renzo-Olivares Renzo-Olivares added the autosubmit Merge PR when tree becomes green via auto submit App label Nov 29, 2023
@auto-submit auto-submit bot merged commit 178130b into flutter:master Nov 29, 2023
70 checks passed
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Nov 29, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Nov 29, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Nov 29, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Nov 29, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Nov 29, 2023
auto-submit bot pushed a commit to flutter/packages that referenced this pull request Nov 29, 2023
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)
...
HugoOlthof pushed a commit to moneybird/packages that referenced this pull request Dec 13, 2023
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)
...
caseycrogers pushed a commit to caseycrogers/flutter that referenced this pull request Dec 29, 2023
…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
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Feb 16, 2024
arc-yong pushed a commit to Arctuition/packages-arc that referenced this pull request Jun 14, 2024
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)
...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
a: text input Entering text in a text field or keyboard related problems autosubmit Merge PR when tree becomes green via auto submit App f: material design flutter/packages/flutter/material repository. framework flutter/packages/flutter repository. See also f: labels.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Allow access to MaterialStatesController in TextField and TextFormField
4 participants