flutter - 删除 DropdownButton 的 Text 和 Trailer Icon 之间的空白
问题描述
我有一个显示字符串列表的下拉列表。字符串的值包含仅由四个字母组成的单词和由许多字母组成的单词。当所选项目是具有四个字母的项目时,这会出现布局问题。在文本和下拉按钮的尾随图标之间可以看到空白或空白。如何删除这个空白空间?如何根据所选值调整下拉按钮的大小?
文本和尾随图标之间的空白区域的照片:
列表:
List<String> textList = ["test", "this_is_a_long_text"];
落下:
DropdownButtonHideUnderline(
child: ButtonTheme(
alignedDropdown: true,
child: DropdownButton<String>(
items: textList.map((String dropDownStringItem) {
return DropdownMenuItem<String>(
value: dropDownStringItem,
child: Text(dropDownStringItem),
);
}).toList(),
onChanged: (String newValueSelected) {
_onDropDownItemSelected(newValueSelected);
},
value: _currentItemSelected,
),
)),
解决方案
作为一个选项,您可以基于PopupMenuButton
而不是常规构建它DropdownButton
下面是一个例子
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Center(child: AwesomeDropdown()),
),
);
}
}
class AwesomeDropdown extends StatefulWidget {
@override
_AwesomeDropdownState createState() => _AwesomeDropdownState();
}
class _AwesomeDropdownState extends State<AwesomeDropdown> {
final List<String> textList = ["test", "this_is_a111111_long_text"];
String _currentItemSelected;
@override
void initState() {
super.initState();
_currentItemSelected = textList[0];
}
@override
Widget build(BuildContext context) {
return PopupMenuButton<String>(
itemBuilder: (context) {
return textList.map((str) {
return PopupMenuItem(
value: str,
child: Text(str),
);
}).toList();
},
child: Row(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
Text(_currentItemSelected),
Icon(Icons.arrow_drop_down),
],
),
onSelected: (v) {
setState(() {
print('!!!===== $v');
_currentItemSelected = v;
});
},
);
}
}
推荐阅读
- android - 已超出每日保存配额
- r - 如何使用 nwk 格式的树在 ggtree 中斜体化物种名称?
- r - 切换选项卡时保存 selectInput 的反应值
- python - 使用定制函数 python pandas 重命名数据框中的列
- node.js - 在 EJS 模板和 Express JS 中使用每个循环
- android - 在android studio中,在android -> app -> src -> main -> res下。然后在“新建”下选择“图像资产”未显示。有什么工作?
- awk - 在给定的编码中执行了哪些操作
- go - 如何使用 opaclient 在本地运行 opa 检查
- vb.net - 在多个 Active Directory 单元中搜索用户
- php - 方法 App\Http\Controllers\FrontendCourseController::update 不存在