Flutter中如何将DropdownButton2的下拉列表居中对齐?
要让下拉列表恰好位于按钮正下方居中,不需要调整Text组件的对齐,直接修改DropdownButton2的以下几个属性即可:
- 移除
offset: const Offset(-20, 0):这个偏移量会让下拉列表向左偏移,破坏居中对齐 - 将
dropdownWidth设置为和按钮宽度一致:把固定值300改成MediaQuery.of(context).size.width * 0.8,确保下拉列表宽度与按钮匹配 - 关闭
dropdownFullScreen: true:开启这个属性会让下拉列表占满屏幕宽度,无法实现精准居中 - 保留
alignment: Alignment.center:这个属性控制下拉列表相对于按钮的对齐方式,确保居中
修改后的核心代码片段:
DropdownButton2( isExpanded: true, items: items .map((item) => DropdownMenuItem<String>( value: item, child: Text( item, style: const TextStyle( fontSize: 14, fontWeight: FontWeight.bold, color: Color.fromARGB(255, 214, 130, 3), ), overflow: TextOverflow.ellipsis, textAlign: TextAlign.center, ), )) .toList(), value: selectedValue, onChanged: (value) { setState(() { selectedValue = value as String; }); }, icon: const Icon( Icons.arrow_downward_sharp, ), iconSize: 14, iconEnabledColor: Color.fromARGB(255, 248, 150, 2), iconDisabledColor: Colors.grey, buttonHeight: 40, buttonWidth: MediaQuery.of(context).size.width * 0.8, buttonPadding: const EdgeInsets.only(left: 14, right: 14), buttonDecoration: BoxDecoration( borderRadius: BorderRadius.circular(14), border: Border.all( color: Colors.black26, ), color: Colors.white, ), buttonElevation: 2, itemHeight: 40, itemPadding: const EdgeInsets.only(left: 14, right: 14), dropdownMaxHeight: 200, // 修改为和按钮一致的宽度 dropdownWidth: MediaQuery.of(context).size.width * 0.8, alignment: Alignment.center, dropdownPadding: null, dropdownDecoration: BoxDecoration( borderRadius: BorderRadius.circular(14), color: Colors.white, ), // 关闭全屏模式 dropdownFullScreen: false, dropdownElevation: 8, scrollbarRadius: const Radius.circular(40), scrollbarThickness: 6, scrollbarAlwaysShow: true, // 移除偏移量 // offset: const Offset(-20, 0), ),
这样调整后,下拉列表就会精准对齐在按钮的正下方居中位置。
内容的提问来源于stack exchange,提问作者Minal Suryawanshi
相关产品推荐
相关产品推荐

