Skip to content

Conversation

@bleroux
Copy link
Contributor

@bleroux bleroux commented Jan 10, 2025

Description

This PR fixes DropdownMenu arrow icon position when InputDecoration.isCollapsed is set to true and InputDecoration.suffixConstraints is set to a smaller value than the min interactive height.

It makes it possible to use collapsed DropdownMenu such as:

image


Before this PR and #153089, InputDecoration.isCollapsed had no impact on the DropdownMenu height and there was no solution to reduce the height because its minimum height is enforced by the IconButton (arrow down or up) which is part of the DropdownMenu.

Since #153089, the height can be reduce with InputDecoration.suffixIconConstraints but it results in the icon being misaligned:

image

After this PR:

When InputDecoration.suffixIconConstraints is used the icon is correctly aligned:

image

Code sample
import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
      title: 'Flutter Demo',
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});
  final String title;

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return const Scaffold(
      body: Center(
        child: Center(
          child: DropdownMenu<String>(
            dropdownMenuEntries: [
              DropdownMenuEntry(label: 'Item 1', value: '1'),
              DropdownMenuEntry(label: 'Item 2', value: '2'),
            ],
            inputDecorationTheme: InputDecorationTheme(
              contentPadding: EdgeInsets.fromLTRB(5, 0, 5, 0),
              isCollapsed: true,
              // Usable since https://github.com/flutter/flutter/pull/153089.
              suffixIconConstraints: BoxConstraints(minHeight: 24, maxHeight: 24),
              filled: true,
            ),
          ),
        ),
      ),
    );
  }
}

Related Issue

Fixes DropdownMenu inputDecoration isCollapsed property does not reduce vertical spacing

Tests

Adds 2 tests.

@github-actions github-actions bot added framework flutter/packages/flutter repository. See also f: labels. f: material design flutter/packages/flutter/material repository. labels Jan 10, 2025
@bleroux bleroux force-pushed the fix_DropdownMenu_isCollapsed_decoration_does_not_reduce_height branch from 3207bde to eda3560 Compare January 13, 2025 12:57
@bleroux bleroux requested a review from QuncCccccc January 14, 2025 14:14
Copy link
Contributor

@QuncCccccc QuncCccccc left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM:) Thanks for the improvement!

@bleroux bleroux added the autosubmit Merge PR when tree becomes green via auto submit App label Jan 15, 2025
@auto-submit auto-submit bot added this pull request to the merge queue Jan 15, 2025
Merged via the queue into flutter:master with commit 44ff2f5 Jan 15, 2025
103 checks passed
@flutter-dashboard flutter-dashboard bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Jan 15, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jan 15, 2025
@bleroux bleroux deleted the fix_DropdownMenu_isCollapsed_decoration_does_not_reduce_height branch January 15, 2025 17:09
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jan 15, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jan 16, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jan 16, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jan 16, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jan 16, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jan 16, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jan 16, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jan 16, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jan 16, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jan 16, 2025
auto-submit bot pushed a commit to flutter/packages that referenced this pull request Jan 16, 2025
flutter/flutter@40c2b86...5517cc9

2025-01-15 37028599+EArminjon@users.noreply.github.com feat: Change default value of keyboardDismissBehavior (flutter/flutter#158580)
2025-01-15 137456488+flutter-pub-roller-bot@users.noreply.github.com Roll pub packages (flutter/flutter#161680)
2025-01-15 jacob.simionato@gmail.com Revert "Autocomplete Options Width" (flutter/flutter#161666)
2025-01-15 stuartmorgan@google.com Update two_dimensional_scrollables triage routing (flutter/flutter#161667)
2025-01-15 flar@google.com [DisplayList] Migrate from SkRSXform to Impeller RSTransform (flutter/flutter#161652)
2025-01-15 engine-flutter-autoroll@skia.org Roll Packages from d1fd623 to f73cb00 (2 revisions) (flutter/flutter#161672)
2025-01-15 bruno.leroux@gmail.com Fix DropdownMenu isCollapsed decoration does not Reduce height (flutter/flutter#161427)
2025-01-15 jason-simmons@users.noreply.github.com Manual roll of Skia to e7b8d078851f (flutter/flutter#161609)
2025-01-15 tessertaha@gmail.com Fix `TabBar` glitchy elastic `Tab`  animation (flutter/flutter#161514)
2025-01-15 137456488+flutter-pub-roller-bot@users.noreply.github.com Roll pub packages (flutter/flutter#161643)
2025-01-15 matanlurey@users.noreply.github.com Exclude the top-level `engine` directory from `generate_gradle_lockfiles`. (flutter/flutter#161635)
2025-01-15 137456488+flutter-pub-roller-bot@users.noreply.github.com Roll pub packages (flutter/flutter#161632)
2025-01-15 matanlurey@users.noreply.github.com Refactor `android_engine_test`, make it easier to debug/deflake locally. (flutter/flutter#161534)
2025-01-15 jonahwilliams@google.com [Impeller] null check device buffer in image encoding. (flutter/flutter#161194)
2025-01-15 nabilamevia2003@gmail.com Feature/twitter keyboard (flutter/flutter#161025)
2025-01-15 jessiewong401@gmail.com Fixed XiaoMi statusBar Bug (flutter/flutter#161271)
2025-01-15 goderbauer@google.com Clean up engine's analysis_options.yaml (flutter/flutter#161554)
2025-01-14 34871572+gmackall@users.noreply.github.com Remove `gradle_deprecated_settings` test app, and remove reference from lockfile exclusion yaml (flutter/flutter#161622)
2025-01-14 devoncarew@google.com [deps] remove no-longer-used repo deps (flutter/flutter#161605)
2025-01-14 flar@google.com [DisplayList] remove obsolete use of Skia goemetry objects in DL utils (flutter/flutter#161553)
2025-01-14 dkwingsmt@users.noreply.github.com [Engine] Support asymmetrical rounded superellipses (flutter/flutter#161409)
2025-01-14 737941+loic-sharma@users.noreply.github.com [SwiftPM] Make 'flutter build ios-framework' generate an empty Package.swift (flutter/flutter#161464)
2025-01-14 1961493+harryterkelsen@users.noreply.github.com [canvaskit] Fix GIF decode failure (flutter/flutter#161536)
2025-01-14 jonahwilliams@google.com [Impeller] fixes for AHB swapchains. (flutter/flutter#161562)
2025-01-14 goderbauer@google.com Last Engine<>Framework lint sync (flutter/flutter#161560)
2025-01-14 goderbauer@google.com Check that localization files of stocks app are up-to-date (flutter/flutter#161608)
2025-01-14 43054281+camsim99@users.noreply.github.com [Android] Actually remove dev dependencies from release builds (flutter/flutter#161343)
2025-01-14 bkonyi@google.com Update package revisions to latest (flutter/flutter#161525)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages
Please CC stuartmorgan@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Feb 12, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Feb 13, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Feb 13, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Mar 6, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Mar 7, 2025
androidseb pushed a commit to androidseb/packages that referenced this pull request Jun 8, 2025
flutter/flutter@40c2b86...5517cc9

2025-01-15 37028599+EArminjon@users.noreply.github.com feat: Change default value of keyboardDismissBehavior (flutter/flutter#158580)
2025-01-15 137456488+flutter-pub-roller-bot@users.noreply.github.com Roll pub packages (flutter/flutter#161680)
2025-01-15 jacob.simionato@gmail.com Revert "Autocomplete Options Width" (flutter/flutter#161666)
2025-01-15 stuartmorgan@google.com Update two_dimensional_scrollables triage routing (flutter/flutter#161667)
2025-01-15 flar@google.com [DisplayList] Migrate from SkRSXform to Impeller RSTransform (flutter/flutter#161652)
2025-01-15 engine-flutter-autoroll@skia.org Roll Packages from d1fd623 to f73cb00 (2 revisions) (flutter/flutter#161672)
2025-01-15 bruno.leroux@gmail.com Fix DropdownMenu isCollapsed decoration does not Reduce height (flutter/flutter#161427)
2025-01-15 jason-simmons@users.noreply.github.com Manual roll of Skia to e7b8d078851f (flutter/flutter#161609)
2025-01-15 tessertaha@gmail.com Fix `TabBar` glitchy elastic `Tab`  animation (flutter/flutter#161514)
2025-01-15 137456488+flutter-pub-roller-bot@users.noreply.github.com Roll pub packages (flutter/flutter#161643)
2025-01-15 matanlurey@users.noreply.github.com Exclude the top-level `engine` directory from `generate_gradle_lockfiles`. (flutter/flutter#161635)
2025-01-15 137456488+flutter-pub-roller-bot@users.noreply.github.com Roll pub packages (flutter/flutter#161632)
2025-01-15 matanlurey@users.noreply.github.com Refactor `android_engine_test`, make it easier to debug/deflake locally. (flutter/flutter#161534)
2025-01-15 jonahwilliams@google.com [Impeller] null check device buffer in image encoding. (flutter/flutter#161194)
2025-01-15 nabilamevia2003@gmail.com Feature/twitter keyboard (flutter/flutter#161025)
2025-01-15 jessiewong401@gmail.com Fixed XiaoMi statusBar Bug (flutter/flutter#161271)
2025-01-15 goderbauer@google.com Clean up engine's analysis_options.yaml (flutter/flutter#161554)
2025-01-14 34871572+gmackall@users.noreply.github.com Remove `gradle_deprecated_settings` test app, and remove reference from lockfile exclusion yaml (flutter/flutter#161622)
2025-01-14 devoncarew@google.com [deps] remove no-longer-used repo deps (flutter/flutter#161605)
2025-01-14 flar@google.com [DisplayList] remove obsolete use of Skia goemetry objects in DL utils (flutter/flutter#161553)
2025-01-14 dkwingsmt@users.noreply.github.com [Engine] Support asymmetrical rounded superellipses (flutter/flutter#161409)
2025-01-14 737941+loic-sharma@users.noreply.github.com [SwiftPM] Make 'flutter build ios-framework' generate an empty Package.swift (flutter/flutter#161464)
2025-01-14 1961493+harryterkelsen@users.noreply.github.com [canvaskit] Fix GIF decode failure (flutter/flutter#161536)
2025-01-14 jonahwilliams@google.com [Impeller] fixes for AHB swapchains. (flutter/flutter#161562)
2025-01-14 goderbauer@google.com Last Engine<>Framework lint sync (flutter/flutter#161560)
2025-01-14 goderbauer@google.com Check that localization files of stocks app are up-to-date (flutter/flutter#161608)
2025-01-14 43054281+camsim99@users.noreply.github.com [Android] Actually remove dev dependencies from release builds (flutter/flutter#161343)
2025-01-14 bkonyi@google.com Update package revisions to latest (flutter/flutter#161525)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages
Please CC stuartmorgan@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
FMorschel pushed a commit to FMorschel/packages that referenced this pull request Jun 9, 2025
flutter/flutter@40c2b86...5517cc9

2025-01-15 37028599+EArminjon@users.noreply.github.com feat: Change default value of keyboardDismissBehavior (flutter/flutter#158580)
2025-01-15 137456488+flutter-pub-roller-bot@users.noreply.github.com Roll pub packages (flutter/flutter#161680)
2025-01-15 jacob.simionato@gmail.com Revert "Autocomplete Options Width" (flutter/flutter#161666)
2025-01-15 stuartmorgan@google.com Update two_dimensional_scrollables triage routing (flutter/flutter#161667)
2025-01-15 flar@google.com [DisplayList] Migrate from SkRSXform to Impeller RSTransform (flutter/flutter#161652)
2025-01-15 engine-flutter-autoroll@skia.org Roll Packages from d1fd623 to f73cb00 (2 revisions) (flutter/flutter#161672)
2025-01-15 bruno.leroux@gmail.com Fix DropdownMenu isCollapsed decoration does not Reduce height (flutter/flutter#161427)
2025-01-15 jason-simmons@users.noreply.github.com Manual roll of Skia to e7b8d078851f (flutter/flutter#161609)
2025-01-15 tessertaha@gmail.com Fix `TabBar` glitchy elastic `Tab`  animation (flutter/flutter#161514)
2025-01-15 137456488+flutter-pub-roller-bot@users.noreply.github.com Roll pub packages (flutter/flutter#161643)
2025-01-15 matanlurey@users.noreply.github.com Exclude the top-level `engine` directory from `generate_gradle_lockfiles`. (flutter/flutter#161635)
2025-01-15 137456488+flutter-pub-roller-bot@users.noreply.github.com Roll pub packages (flutter/flutter#161632)
2025-01-15 matanlurey@users.noreply.github.com Refactor `android_engine_test`, make it easier to debug/deflake locally. (flutter/flutter#161534)
2025-01-15 jonahwilliams@google.com [Impeller] null check device buffer in image encoding. (flutter/flutter#161194)
2025-01-15 nabilamevia2003@gmail.com Feature/twitter keyboard (flutter/flutter#161025)
2025-01-15 jessiewong401@gmail.com Fixed XiaoMi statusBar Bug (flutter/flutter#161271)
2025-01-15 goderbauer@google.com Clean up engine's analysis_options.yaml (flutter/flutter#161554)
2025-01-14 34871572+gmackall@users.noreply.github.com Remove `gradle_deprecated_settings` test app, and remove reference from lockfile exclusion yaml (flutter/flutter#161622)
2025-01-14 devoncarew@google.com [deps] remove no-longer-used repo deps (flutter/flutter#161605)
2025-01-14 flar@google.com [DisplayList] remove obsolete use of Skia goemetry objects in DL utils (flutter/flutter#161553)
2025-01-14 dkwingsmt@users.noreply.github.com [Engine] Support asymmetrical rounded superellipses (flutter/flutter#161409)
2025-01-14 737941+loic-sharma@users.noreply.github.com [SwiftPM] Make 'flutter build ios-framework' generate an empty Package.swift (flutter/flutter#161464)
2025-01-14 1961493+harryterkelsen@users.noreply.github.com [canvaskit] Fix GIF decode failure (flutter/flutter#161536)
2025-01-14 jonahwilliams@google.com [Impeller] fixes for AHB swapchains. (flutter/flutter#161562)
2025-01-14 goderbauer@google.com Last Engine<>Framework lint sync (flutter/flutter#161560)
2025-01-14 goderbauer@google.com Check that localization files of stocks app are up-to-date (flutter/flutter#161608)
2025-01-14 43054281+camsim99@users.noreply.github.com [Android] Actually remove dev dependencies from release builds (flutter/flutter#161343)
2025-01-14 bkonyi@google.com Update package revisions to latest (flutter/flutter#161525)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages
Please CC stuartmorgan@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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.

DropdownMenu inputDecoration isCollapsed property does not reduce vertical spacing

2 participants