Flutter DataTable - 如何设置列宽?

Fet*_*mos 3 dart flutter flutter-layout

我在 Flutter 应用程序中使用 DataTable。这是我的代码的简单示例:

    DataTable(
          columns: [
            DataColumn(label: Text('Column1')),
            DataColumn(label: Text('Column2')),
            DataColumn(label: Text('Column3')),
          ],
          rows: [
            DataRow(cells: [
              DataCell(Text('1')),
              DataCell(Text('2')),
              DataCell(Text('6')),
            ]),
            DataRow(cells: [
              DataCell(Text('12')),
              DataCell(Text('John')),
              DataCell(Text('9')),
            ]),
          
          ],
        )
Run Code Online (Sandbox Code Playgroud)

我需要:

-column1 为可用宽度的 20%

-column1 为可用宽度的 40%

-column1 为可用宽度的 40%

我怎样才能做到这一点?数据表可以吗?

blu*_*ile 10

你可以尝试这样的事情:

import 'package:flutter/material.dart';

void main() {
  runApp(MaterialApp(home: MyApp()));
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final double width = MediaQuery.of(context).size.width;
    return Scaffold(
      appBar: AppBar(
        title: const Text("Flutter Demo"),
      ),
      body: Container(
        width: width,
        child: DataTable(
          columnSpacing: 0,
          horizontalMargin: 0,
          columns: [
            DataColumn(
              label: Container(
                width: width * .2,
                child: Text('Column1'),
              ),
            ),
            DataColumn(
              label: Container(
                width: width * .4,
                child: Text('Column2'),
              ),
            ),
            DataColumn(
              label: Container(
                width: width * .4,
                child: Text('Column3'),
              ),
            ),
          ],
          rows: [
            DataRow(cells: [
              DataCell(Text('1')),
              DataCell(Text('2')),
              DataCell(Text('6')),
            ]),
            DataRow(cells: [
              DataCell(Text('12')),
              DataCell(Text('John')),
              DataCell(Text('9')),
            ]),
          ],
        ),
      ),
    );
  }
}
Run Code Online (Sandbox Code Playgroud)