Flutter DataTable 排序图标未显示

标签 flutter

Flutter DataTable 中的排序图标未显示,我不确定这是否是一个错误,或者我的代码是否错误。

根据DataTable (Flutter Widget of the Week)我只需在 DataTable()

内添加 sortColumnIndex: 0

我的期望: DataTable with sort arrow

我得到的是:DataTable without sort arrow

这是我正在使用的代码:

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter DataTable',
      home: DataScreen(),
    );
  }
}

class DataScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: DataTable(
          sortColumnIndex: 0,
          sortAscending: true,
          columns: [
            DataColumn(label: Text('Name')),
            DataColumn(label: Text('Year')),
          ],
          rows: [
            DataRow(cells: [
              DataCell(Text('Dash')),
              DataCell(Text('2018')),
            ]),
            DataRow(cells: [
              DataCell(Text('Gopher')),
              DataCell(Text('2009')),
            ]),
          ],
        ),
      ),
    );
  }
}

我知道,有一个问题 Sort cannot be disabled on DataTable #26845和拉取请求 [DataTable] Hide arrow padding when not sorting #51667 。但即使我更改为开发 channel ,排序箭头也没有显示。我也厌倦了 Flutter.dev DataTable class 上的交互式代码示例

我测试过的版本:

  • Flutter 1.22.1 • channel 稳定
  • Flutter 1.22.1 • channel 测试版
  • Flutter 1.23.0-7.0.pre • channel 开发
  • Flutter 1.23.0-8.0.pre.283 • channel 主控

所以我不确定我是否错过了什么,或者它是否是一个错误。

最佳答案

您必须设置函数:排序

class DataScreen extends StatefulWidget {
  @override
  _DataScreenState createState() => _DataScreenState();
}

class _DataScreenState extends State<DataScreen> {
  bool ascending = false;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: DataTable(
          sortColumnIndex: 0,
          sortAscending: ascending,
          columns: [
            DataColumn(
              label: Text('Name'),
              onSort: (columnIndex, ascending) {
                setState(() {
                  this.ascending = ascending;
                });
              },
            ),
            DataColumn(
              label: Text('Year'),
            ),
          ],
          rows: [
            DataRow(cells: [
              DataCell(
                Text('Dash'),
              ),
              DataCell(
                Text('2018'),
              ),
            ]),
            DataRow(cells: [
              DataCell(
                Text('Gopher'),
              ),
              DataCell(
                Text('2009'),
              ),
            ]),
          ],
        ),
      ),
    );
  }
}

enter image description here

关于Flutter DataTable 排序图标未显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64292150/

相关文章:

android - Flutter dart 调试器断点停止工作

flutter - 使用flutter Provider小部件时出现以下错误

Flutter无法确定任务 ':app:processDebugResources'的依赖关系

unit-testing - Flutter:测试共享偏好

flutter - flutter:如何在带状态的构造函数中使用带参数的函数

flutter - 使用数学将项目分布在圆圈周围 - Flutter 代码

flutter - 可扩展的底栏溢出

php - 将值发布到 php 文件以执行 sql 查询并以 json 格式取回数据

dart - flutter 测试 : Waiting for a certain duration

dart - 我们应该混淆 Flutter 应用程序中的 Dart 代码吗?