Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions packages/dropdown_button2/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

- Remove temporary fix for list not respecting itemCount when calling itemExtentBuilder.
- Fix selected index not updating when items list changes, closes #392.
- Fix dropdown menu width not matching button width with OutlineInputBorder.

## 3.0.0-beta.24

Expand Down
19 changes: 16 additions & 3 deletions packages/dropdown_button2/lib/src/dropdown_button2.dart
Original file line number Diff line number Diff line change
Expand Up @@ -595,14 +595,27 @@ class _DropdownButton2State<T> extends State<DropdownButton2<T>> with WidgetsBin
EdgeInsets? _getInputDecorationPadding() {
// Return the contentPadding only if inputDecoration is defined.
if (widget._inputDecoration case final decoration?) {
final ThemeData theme = Theme.of(context);
final TextDirection? textDirection = Directionality.maybeOf(context);
// Use inputDecorationTheme.visualDensity when added (https://github.com/flutter/flutter/issues/166201#issuecomment-2774622584)
final Offset densityOffset = Theme.of(context).visualDensity.baseSizeAdjustment;

final EdgeInsets? contentPadding =
(decoration.contentPadding ?? Theme.of(context).inputDecorationTheme.contentPadding)
(decoration.contentPadding ?? theme.inputDecorationTheme.contentPadding)
?.resolve(textDirection);

// InputDecorator adds gapPadding horizontally for OutlineInputBorder.
final border = decoration.border ?? theme.inputDecorationTheme.border;
final double gapPadding = switch (border) {
OutlineInputBorder(:final gapPadding) => gapPadding,
_ => 0.0,
};

// Use inputDecorationTheme.visualDensity when added (https://github.com/flutter/flutter/issues/166201#issuecomment-2774622584)
final Offset densityOffset = theme.visualDensity.baseSizeAdjustment;

return contentPadding?.copyWith(
left: contentPadding.left + gapPadding,
top: math.max(0, contentPadding.top + densityOffset.dy / 2),
right: contentPadding.right + gapPadding,
bottom: math.max(0, contentPadding.bottom + densityOffset.dy / 2),
);
} else {
Expand Down
Loading