Flutter表格展示插件flutter_table的使用

发布于 1周前 作者 phonegap100 来自 Flutter

Flutter表格展示插件flutter_table的使用

flutter_table 插件(实际为 table_sticky_headers)是用于在Flutter应用程序中显示带有粘性标题的二维表格。该插件允许你在水平和垂直方向上滚动表格时,保持顶部和左侧的标题固定。以下是一个完整的示例demo,展示了如何使用这个插件。

1. 添加依赖

首先,在你的 pubspec.yaml 文件中添加 table_sticky_headers 依赖:

dependencies:
  flutter:
    sdk: flutter
  table_sticky_headers: ^最新版本

然后运行 flutter pub get 来安装依赖。

2. 完整示例代码

以下是一个完整的示例代码,展示了如何使用 StickyHeadersTable 来创建一个带有粘性标题的表格,并提供了简单的数据生成逻辑。

import 'package:flutter/material.dart';
import 'package:table_sticky_headers/table_sticky_headers.dart';

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: TablePage(),
    );
  }
}

class TablePage extends StatefulWidget {
  [@override](/user/override)
  _TablePageState createState() => _TablePageState();
}

class _TablePageState extends State<TablePage> {
  // 表格的列数和行数
  final int columns = 10;
  final int rows = 20;

  // 生成表格数据
  List<List<String>> makeData() {
    final List<List<String>> output = [];
    for (int i = 0; i < columns; i++) {
      final List<String> row = [];
      for (int j = 0; j < rows; j++) {
        row.add('Col $i, Row $j');
      }
      output.add(row);
    }
    return output;
  }

  // 生成列标题
  List<String> makeTitleColumn() => List.generate(columns, (i) => 'Top $i');

  // 生成行标题
  List<String> makeTitleRow() => List.generate(rows, (i) => 'Left $i');

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Sticky Headers Table Example'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(8.0),
        child: StickyHeadersTable(
          // 列的数量
          columnsLength: columns,
          // 行的数量
          rowsLength: rows,
          // 列标题构建器
          columnsTitleBuilder: (int i) => Text(makeTitleColumn()[i]),
          // 行标题构建器
          rowsTitleBuilder: (int i) => Text(makeTitleRow()[i]),
          // 单元格内容构建器
          contentCellBuilder: (int i, int j) => Text(makeData()[i][j]),
          // 左上角的粘性单元格
          legendCell: Text('Sticky Legend'),
          // 设置单元格尺寸为统一大小
          cellDimensions: CellDimensions.uniform(width: 100, height: 50),
          // 设置单元格内容对齐方式
          cellAlignments: CellAlignments.uniform(Alignment.center),
          // 点击粘性单元格时的回调
          onStickyLegendPressed: () => print('Sticky legend pressed.'),
          // 点击列标题时的回调
          onColumnTitlePressed: (int i) => print('Column $i title pressed.'),
          // 点击行标题时的回调
          onRowTitlePressed: (int j) => print('Row $j title pressed.'),
          // 点击内容单元格时的回调
          onContentCellPressed: (int i, int j) => print('Cell at column $i, row $j pressed.'),
          // 初始滚动偏移量
          initialScrollOffsetX: 0.0,
          initialScrollOffsetY: 0.0,
          // 滚动结束时的回调
          onEndScrolling: (double scrollOffsetX, double scrollOffsetY) {
            print('Scroll ended at X: $scrollOffsetX, Y: $scrollOffsetY');
          },
        ),
      ),
    );
  }
}

更多关于Flutter表格展示插件flutter_table的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter表格展示插件flutter_table的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是一个关于如何在Flutter应用中使用flutter_table插件来展示表格的示例代码。flutter_table是一个可以帮助你在Flutter应用中轻松创建和展示表格的插件。

首先,确保你已经在pubspec.yaml文件中添加了flutter_table依赖:

dependencies:
  flutter:
    sdk: flutter
  flutter_table: ^0.4.0  # 请检查最新版本号

然后运行flutter pub get来安装依赖。

接下来,你可以在你的Flutter应用中使用flutter_table来创建一个表格。下面是一个完整的示例代码:

import 'package:flutter/material.dart';
import 'package:flutter_table/flutter_table.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Table Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  final List<List<String>> data = [
    ['Name', 'Age', 'Email'],
    ['Alice', '24', 'alice@example.com'],
    ['Bob', '30', 'bob@example.com'],
    ['Charlie', '29', 'charlie@example.com'],
  ];

  final List<TableColumn> columns = [
    TableColumn(
      label: 'Name',
      width: 0.3, // 宽度占比
      alignment: Alignment.centerLeft,
    ),
    TableColumn(
      label: 'Age',
      width: 0.2,
      alignment: Alignment.center,
    ),
    TableColumn(
      label: 'Email',
      width: 0.5,
      alignment: Alignment.centerLeft,
    ),
  ];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Table Example'),
      ),
      body: Container(
        padding: EdgeInsets.all(16.0),
        child: Table(
          columns: columns,
          data: data,
          border: TableBorder.all(color: Colors.black, width: 1.0),
          defaultVerticalAlignment: TableCellVerticalAlignment.middle,
        ),
      ),
    );
  }
}

在这个示例中,我们定义了一个MyHomePage类,该类包含一个数据列表data,这个列表包含了表格的内容。我们还定义了一个columns列表,它包含了表格的列信息,包括列的标签、宽度占比和对齐方式。

然后,在build方法中,我们使用ScaffoldAppBar来创建一个带有标题的页面,并在页面的主体部分使用ContainerPadding来添加一些内边距。最后,我们使用Table组件来展示表格,传入columnsdata作为参数,并设置表格的边框和单元格的垂直对齐方式。

请注意,flutter_table插件的具体用法可能会随着版本的更新而有所变化,因此请务必参考最新的官方文档或插件仓库中的示例代码。如果你遇到任何问题或需要进一步的自定义,请参考flutter_table的官方文档或在其GitHub仓库中查找相关信息。

回到顶部