flutter 在多选下拉列表中对列表排序

ss2ws0br  于 2023-05-19  发布在  Flutter
关注(0)|答案(1)|浏览(235)

我试图在多选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按字母顺序排序

kxxlusnw

kxxlusnw1#

很难提出任何建议,因为您没有提供有关此列表内容的任何信息。但是,sort()方法只有在列表元素实现Comparable接口时才有效,该接口用于sort函数中。假设list包含一些自定义数据类,您可以使用sortedBy()方法。你可以传递一个lambda,它应该返回一些可以比较的东西,例如。字符串或数字。例如,如果您的Speciality类有一个“name”属性,它是字符串,则调用:

specialityList.sortedBy{ it.name }

应该可以
如果我的假设不正确,我建议你提供更多关于你的列表内容的信息。

相关问题