首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法排序“此表达式具有一种'void‘类型,因此不能使用它的值。”

无法排序“此表达式具有一种'void‘类型,因此不能使用它的值。”
EN

Stack Overflow用户
提问于 2022-03-26 13:19:41
回答 1查看 627关注 0票数 0

我是个新手,我无法对列表进行排序,无法得到“此表达式有一种类型的'void‘,因此它的值无法使用。”错误

代码语言:javascript
运行
复制
List getSnack = [];
  var sortSnack = [];

  Future _getSnacks() async {
    var response = await http.get(Uri.parse(url));
    List decode = jsonDecode(response.body);
    setState(() {
      getSnack = decode
          .where((snack) => snack["snack_type"]
              .toLowerCase()
              .contains(defaultType.toLowerCase()))
          .toList();
    });

    sortSnack = getSnack.sort((a, b) => a["snack"].compareTo(b["snack"]));
  }

我想把含有零食名称的“零食”从and分类,反之亦然。

我试过了,但还是不起作用

代码语言:javascript
运行
复制
List getSnack = [];
  var sortSnack =  getSnack.sort((a, b) => a["snack"].compareTo(b["snack"]));;

  Future _getSnacks() async {
    var response = await http.get(Uri.parse(url));
    List decode = jsonDecode(response.body);
    // List filter = decode;
    setState(() {
      getSnack = decode
          .where((snack) => snack["snack_type"]
              .toLowerCase()
              .contains(defaultType.toLowerCase()))
          .toList();
    });
  }

错误说“实例成员'getSnack‘不能在初始化器中访问。”

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-26 14:22:48

排序()将其排序应用于列表,它不会返回任何值(无效)。你应该写的是:

代码语言:javascript
运行
复制
getSnack.sort((a, b) => a["snack"].compareTo(b["snack"]));
var sortSnack = getSnack; 

或者使用级联操作符,如果您想在一行上这样做的话:

代码语言:javascript
运行
复制
var sortSnack = getSnack..sort((a, b) => a["snack"].compareTo(b["snack"]));

请注意,在这两种情况下,sortSnack都是getSnack的浅表副本。SortSnack中的任何变化都将反映在getSnack中。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71628390

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档