我试图在多选DD中按字母顺序对特定类的列表进行排序。我尝试使用.sort()函数,但它不工作。投掷和错误。
ProfileField(
child: Container(
decoration: BoxDecoration(
color: CustomTheme.white,
borderRadius: BorderRadius.circular(10.58),
border: Border.all(
width: 1.25,
color: CustomTheme.lightGreen,
),
),
child: MultiSelectDialogField(
buttonText: Text('Select Specialities'),
decoration: BoxDecoration(
border: Border.all(
color: Colors.transparent,
),
),
buttonIcon: Icon(
Icons.arrow_drop_down_rounded,
color: CustomTheme.deepShadedBlue,
size: 24,
),
initialValue: state.profile?.speciality
?.map((e) => e as String)
.toList() ??
[],
items: state.specialityList
?.map((e) => MultiSelectItem(e.id, e.content as String))
.toList() ??
[],
listType: MultiSelectListType.CHIP,
onConfirm: (values) {
List<String> specialities =
values.map((e) => e as String).toList();
cubit.updateUser(state.copyWith(
profile:
state.profile?.copyWith(speciality: specialities)));
},
),
),
),
我希望列表state.specialityList按字母顺序排序
1条答案
按热度按时间kxxlusnw1#
很难提出任何建议,因为您没有提供有关此列表内容的任何信息。但是,sort()方法只有在列表元素实现Comparable接口时才有效,该接口用于sort函数中。假设list包含一些自定义数据类,您可以使用sortedBy()方法。你可以传递一个lambda,它应该返回一些可以比较的东西,例如。字符串或数字。例如,如果您的Speciality类有一个“name”属性,它是字符串,则调用:
应该可以
如果我的假设不正确,我建议你提供更多关于你的列表内容的信息。