You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中如何将选中的Salon对象置于ModalBottomSheet列表首位?

问题解决:将选中的Salon移到列表首位

问题根源

你当前的排序逻辑错误,List.sort的回调函数需要对比**两个列表元素(a和b)**的相对顺序,而你现在只拿单个元素a和目标idSalon比较,这样无法定义a和b之间的排序规则,导致排序完全不生效。

修正后的排序代码

替换原有排序逻辑,实现「选中的沙龙排首位,其余元素按需排序」的效果:

listsSalon.sort((a, b) {
  // 若a是选中的沙龙,优先排在前面
  if (a.id == idSalon) {
    return -1;
  }
  // 若b是选中的沙龙,优先排在前面
  if (b.id == idSalon) {
    return 1;
  }
  // 其余情况可选择保持原顺序(返回0)或按id字典序排序(返回a.id.compareTo(b.id))
  return 0; // 保持列表原有顺序
  // return a.id.compareTo(b.id); // 按id字典序排序
});

额外注意事项

  • 确保idSalon已从flutterSecureStorage中正确读取且不为空(你用了idSalon!,需提前处理空值场景避免崩溃)
  • 排序操作要在ListView.builder构建前执行,比如在获取到listsSalon和idSalon的异步回调完成后立即执行排序
  • 确认SalonWidget传入的是排序后的listsSalon列表

内容的提问来源于stack exchange,提问作者joisberg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 14:50:16