Flutter:有没有办法更改DataTable的行分割线颜色?

8

我最近使用了DataTable,需要更改行线的颜色或使其不可见(也就是说,我不想让表格显示任何行线)。

如果有人知道,请帮忙!谢谢。

3个回答

19

使用主题小部件,并按以下所示覆盖dividerColor

enter image description here

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    return _MyHomePageState();
  }
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: Theme(
          data: Theme.of(context).copyWith(
              dividerColor: Colors.green
          ),
          child: DataTable(
              columns: [
                DataColumn(label: Text('Language')),
                DataColumn(label: Text('Year'))
              ],
              rows: [
                DataRow(
                  cells: [
                    DataCell(Text('Go')),
                    DataCell(Text('2009'))
                  ],
                ),
                DataRow(
                  cells: [
                    DataCell(Text('Dart')),
                    DataCell(Text('2018'))
                  ],
                ),
                DataRow(
                  cells: [
                    DataCell(Text('Java')),
                    DataCell(Text('1992'))
                  ],
                ),
              ]
          ),
        ),
      ),
    );
  }
}

2
如果您仍在寻找答案,这里是代码。
 return DataRow.byIndex(
          index: row.key,
          color: MaterialStateColor.resolveWith(
            (states) {
              if (row.key % 2 == 0) {
                return Colors.blue[50];
              } else {
                return Colors.white;
              }
            },
          ),

确保你正在使用 list.asMap().entries.map((data)=>//你的工作); - Raju Gupta
请您能否再解释详细一些?我正在尝试在交替行中添加颜色,但我没有使用构造函数。我大约有50行。我是否需要手动为每一行添加颜色,还是有自动化的方法可以实现? - jayesh saha
那么你是如何显示数据的? - Raju Gupta

0
另一种生成分隔线颜色的简单方法是使用Datatable的border属性中的horizontalInside。
 DataTable(
      border: const TableBorder(
           horizontalInside: BorderSide(
              width: 1,
              color: Colors.green,
           ),
           columns: [],
           rows: [],                                   
     ),
 )

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接