Flutter下拉菜单DropdownButton

class BusinessPage extends StatefulWidget {
  @override
  _BusinessPageState createState() => _BusinessPageState();
}

class _BusinessPageState extends State<BusinessPage> {
   List<DropdownMenuItem<String>> sortItems = [];
   String _selectedSort = '排序';

   sortItems.add(DropdownMenuItem(value: '排序', child: Text('排序')));
   sortItems.add(DropdownMenuItem(value: '价格降序', child: Text('价格降序')));
   sortItems.add(DropdownMenuItem(value: '价格升序', child: Text('价格升序')));

  @override
  Widget build(BuildContext context) {
    return Scaffold(body: getList());
  }

  getList() {
    return DropdownButton(
                        value: _selectedSort,
                        items: sortItems,
                        onChanged: changedSort,
                      );
  }

DropdownButton的 value 参数一定要是包含在 items 参数中的选项,否则会报如下错误:

flutter: 'package:flutter/src/material/dropdown.dart': Failed assertion: line 608 pos 15: 'items == null ||
flutter: items.isEmpty || value == null || items.where((DropdownMenuItem<T> item) => item.value ==
flutter: value).length == 1': is not true.
image.png

如果需要一个未选择状态的默认提示,就用hint属性,同时把value属性设为null:

hint: Text(
     '请选择',
      style: TextStyle(
      fontSize: 28.sp,
      color: Utils.hexColor('999999'),
      ),
),

不想要下划线就再套一层DropdownButtonHideUnderline:

child: Container(
    alignment: Alignment.center,
    child: DropdownButtonHideUnderline(
        child: DropdownButton(
            value: _selectedSort,
            items: sortItems,
            onChanged: changedSort,
        ),
    ),
),

或者把underline属性设置为一个空Container:

underline: Container(),

设为null是不行的

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容