代码之家  ›  专栏  ›  技术社区  ›  Greg Noe

对数据表排序方向箭头的混淆

  •  0
  • Greg Noe  · 技术社区  · 7 年前

    我觉得我看到了弗利特 DataTable 材料设计和颤振实现之间的排序箭头。

    材料设计 Data table spec

    enter image description here

    不过,在《颤栗》中,情况似乎恰恰相反。升序数据有一个向下的箭头,降序数据有一个向上的箭头。我发现这在我自己的实现和应用程序中都是正确的 official Flutter DataTable demo

    enter image description here

    对我个人来说,升序数据的箭头指向上方更有意义,但我正试图理解颤振中是否存在设计缺陷,或者我只是误解了材料设计,或者从图片中做出了太多假设。

    我想我的部分困惑在 this article about sort order arrow direction 尤其是他们在文章结尾处关于三角形和箭头的解释。

    颤振的排序顺序箭头方向正确吗?

    0 回复  |  直到 7 年前
        1
  •  0
  •   timotaoh    5 年前

    在使用日期选择小部件中的setState时,我的应用程序遇到了类似的问题,这会导致数据表小部件第一列中的箭头从“向上”变为“向下”,而不会更改排序顺序。

    enter image description here

    我在我的项目中访问了DataTable源代码,并在顶部的if语句中添加了一个额外的条件,该条件修复了错误,并且不影响任何其他功能:

    位置

    flutter/packages/flutter/lib/src/material/data_table.dart
    

    原始代码[从1142行开始]

    if ((_up != newUp) && !skipArrow) {
      if (_orientationController.status == AnimationStatus.dismissed) {
        _orientationController.forward();
      } else {
        _orientationController.reverse();
      }
    }
    

    if ((_up != newUp) && (newUp == false || _up != null) && !skipArrow) {
      if (_orientationController.status == AnimationStatus.dismissed) {
        _orientationController.forward();
      } else {
        _orientationController.reverse();
      }
    }