对 Datatable 的排序方向箭头感到困惑
Posted
技术标签:
【中文标题】对 Datatable 的排序方向箭头感到困惑【英文标题】:Confusion over Datatable's sort direction arrows 【发布时间】: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 的排序箭头方向是否正确?
【问题讨论】:
恕我直言,这是错误的。向下指的是下降(显然),向上指的是上升。也许这只是一个意外。这些词暗示上升是向上,反之亦然.. 如果某些列默认升序而其他列下降,则将箭头与升序与降序相关可能会造成混淆。大多数用户实际上并没有想得那么远,所以我选择了视觉上不太嘈杂的向下箭头作为默认排序顺序,向上箭头表示反向。不过,可以肯定地说材料规范取代了颤振演示。 【参考方案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();
【讨论】:
以上是关于对 Datatable 的排序方向箭头感到困惑的主要内容,如果未能解决你的问题,请参考以下文章