You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Syncfusion Flutter DataGrid列宽调整功能失效问题求助

Flutter Web中Syncfusion DataGrid列宽调整失效问题

环境信息

  • Flutter版本:3.7.7
  • Dart版本:2.19.4
  • Syncfusion DataGrid包版本:syncfusion_flutter_datagrid: ^21.1.35
  • 运行环境:Chrome 107.0.5304.110(官方正式版64位)、Ubuntu 22

问题描述

在Flutter Web上使用Syncfusion DataGrid实现列宽调整功能,已在组件中配置allowColumnsResizing: true、columnResizeMode: ColumnResizeMode.onResize,并设置列宽模式为ColumnWidthMode.fill,但拖动列边界时无法调整列宽,功能完全失效。演示效果如下:

列宽调整失效演示

完整代码

import 'package:flutter/material.dart';
import 'package:syncfusion_flutter_datagrid/datagrid.dart';

class TestFile extends StatefulWidget {
  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<TestFile> {
  final List<Data> _data = [
    Data('John', 'Doe', 30),
    Data('Jane', 'Doe', 25),
    Data('Bob', 'Smith', 40),
    Data('Alice', 'Johnson', 35),
  ];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('SfDataGrid Column Resizing Example')),
      body: SfDataGrid(
        source: _DataSource(data: _data),
        columnWidthMode: ColumnWidthMode.fill,
        allowColumnsResizing: true,
        columnResizeMode: ColumnResizeMode.onResize,
        columns: <GridColumn>[
          GridColumn(columnName: 'firstName', label: const Text('First Name')),
          GridColumn(columnName: 'lastName', label: const Text('Last Name')),
          GridColumn(columnName: 'age', label: const Text('Age')),
        ],
      ),
    );
  }
}

class _DataSource extends DataGridSource {
  final List<Data> data;

  _DataSource({required this.data});

  @override
  List<DataGridRow> get rows =>
      data.map((d) => DataGridRow(cells: [
            DataGridCell<String>(columnName: 'firstName', value: d.firstName),
            DataGridCell<String>(columnName: 'lastName', value: d.lastName),
            DataGridCell<int>(columnName: 'age', value: d.age),
          ])).toList();

  @override
  DataGridRowAdapter buildRow(DataGridRow row) {
    return DataGridRowAdapter(
      cells: row.getCells().map<Widget>((dataCell) {
        return Container(
          alignment: Alignment.center,
          padding: const EdgeInsets.all(8),
          child: Text(dataCell.value.toString()),
        );
      }).toList(),
    );
  }
}

class Data {
  final String firstName;
  final String lastName;
  final int age;

  Data(this.firstName, this.lastName, this.age);
}

内容的提问来源于stack exchange,提问作者Abbas Jafari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 06:15:05