混淆Datatable的排序方向箭头

时间:2018-07-11 20:08:22

标签: dart material-design flutter

我觉得我发现Flutter的DataTable排序顺序箭头在Material Design和Flutter的实现之间存在差异。

Material Design的Data table spec(通常)显示了当列数据上升时指向上方的箭头和当列数据下降时指向下方的箭头。在排序部分和规格部分中是这样。关于工具提示的图则相反。但是,文本从未真正指定方向。

enter image description here

在Flutter中,似乎相反。上升数据具有向下的箭头,而下降数据具有向上的箭头。我发现在我自己的实现和official Flutter DataTable demo中都是正确的,如下图所示:

enter image description here

就我个人而言,上升数据的箭头指向上方更有意义,但我试图了解Flutter中是否存在设计错误,或者我是否只是误解了Material Design或从中做出了太多假设图片。

我认为this article about sort order arrow direction中描述了我的部分困惑,尤其是他们在文章结尾处关于如何解释三角形与箭头的观点。

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

1 个答案:

答案 0 :(得分:0)

在使用日期选择小部件中的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();
  }
}