mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
feat: Add cursorHeight to DropdownMenu (#172615)
This change adds the `cursorHeight` property to `DropdownMenu`, allowing developers to customize the cursor height in the text field within the dropdown. The `cursorHeight` property is passed down to the underlying `TextField` widget. <!-- Thanks for filing a pull request! Reviewers are typically assigned within a week of filing a request. To learn more about code review, see our documentation on Tree Hygiene: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md --> fixes #172425 ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [Tree Hygiene] wiki page, which explains my responsibilities. - [x] I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement]. - [x] I signed the [CLA]. - [x] I listed at least one issue that this PR fixes in the description above. - [x] I updated/added relevant documentation (doc comments with `///`). - [x] I added new tests to check the change I am making, or this PR is [test-exempt]. - [x] I followed the [breaking change policy] and added [Data Driven Fixes] where supported. - [x] All existing and new tests are passing. If you need help, consider asking for advice on the #hackers-new channel on [Discord]. <!-- Links --> [Contributor Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview [Tree Hygiene]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md [test-exempt]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests [Flutter Style Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md [Features we expect every widget to implement]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement [CLA]: https://cla.developers.google.com/ [flutter/tests]: https://github.com/flutter/tests [breaking change policy]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes [Discord]: https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md [Data Driven Fixes]: https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md --------- Co-authored-by: Qun Cheng <36861262+QuncCccccc@users.noreply.github.com>
This commit is contained in:
parent
74d0ca2143
commit
e89c29a642
@ -194,6 +194,7 @@ class DropdownMenu<T> extends StatefulWidget {
|
||||
this.closeBehavior = DropdownMenuCloseBehavior.all,
|
||||
this.maxLines = 1,
|
||||
this.textInputAction,
|
||||
this.cursorHeight,
|
||||
this.restorationId,
|
||||
}) : assert(filterCallback == null || enableFilter),
|
||||
assert(
|
||||
@ -558,6 +559,9 @@ class DropdownMenu<T> extends StatefulWidget {
|
||||
/// {@macro flutter.widgets.TextField.textInputAction}
|
||||
final TextInputAction? textInputAction;
|
||||
|
||||
/// {@macro flutter.widgets.editableText.cursorHeight}
|
||||
final double? cursorHeight;
|
||||
|
||||
/// {@macro flutter.material.textfield.restorationId}
|
||||
final String? restorationId;
|
||||
|
||||
@ -1112,6 +1116,7 @@ class _DropdownMenuState<T> extends State<DropdownMenu<T>> {
|
||||
textAlignVertical: TextAlignVertical.center,
|
||||
maxLines: widget.maxLines,
|
||||
textInputAction: widget.textInputAction,
|
||||
cursorHeight: widget.cursorHeight,
|
||||
style: effectiveTextStyle,
|
||||
controller: _effectiveTextEditingController,
|
||||
onEditingComplete: _handleEditingComplete,
|
||||
|
||||
@ -4515,6 +4515,23 @@ void main() {
|
||||
expect(selectedValueText.style.color, disabledColor);
|
||||
},
|
||||
);
|
||||
|
||||
testWidgets('DropdownMenu can set cursorHeight', (WidgetTester tester) async {
|
||||
const double cursorHeight = 4.0;
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Scaffold(
|
||||
body: DropdownMenu<TestMenu>(
|
||||
cursorHeight: cursorHeight,
|
||||
dropdownMenuEntries: menuChildren,
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
final EditableText editableText = tester.widget(find.byType(EditableText));
|
||||
expect(editableText.cursorHeight, cursorHeight);
|
||||
});
|
||||
}
|
||||
|
||||
enum TestMenu {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user