【问题标题】:Confusion over Datatable's sort direction arrows对 Datatable 的排序方向箭头感到困惑
【发布时间】:2018-12-19 23:13:37
【问题描述】:

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

Material Design 的Data table spec(大部分)显示当列数据上升时箭头指向上方,当列数据下降时箭头指向下方。这在排序部分和规格部分是正确的。有一个关于工具提示的图像,它是相反的。然而,文本从未真正指定方向。

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

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

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

Flutter 的排序箭头方向是否正确?

【问题讨论】:

  • 恕我直言,这是错误的。向下指的是下降(显然),向上指的是上升。也许这只是一个意外。这些词暗示上升是向上,反之亦然..
  • 如果某些列默认升序而其他列下降,则将箭头与升序与降序相关可能会造成混淆。大多数用户实际上并没有想得那么远,所以我选择了视觉上不太嘈杂的向下箭头作为默认排序顺序,向上箭头表示反向。不过,可以肯定地说材料规范取代了颤振演示。

标签: dart material-design flutter


【解决方案1】:

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

我在我的项目中访问了 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();
  }
}

【讨论】:

    猜你喜欢
    • 2019-08-22
    • 2022-01-11
    • 2018-06-15
    • 2014-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-27
    • 2014-09-07
    相关资源
    最近更新 更多