如何修复数据行/数据列范围错误(索引):无效值:有效值范围为空:0

问题描述 投票:0回答:1

我正在使用 Flutter 数据表。

我有一个列,我想添加多行。

我初始化了列和行,但我收到 RangeError(索引)。

我不再有空列和行。可以请您指教吗?

我的代码:

class MyHomePageState extends State<MyHomePage> {
  List<DataColumn> myDataColumnList = [];
  List<DataRow> myDataRowList = [];
  int i = 1;

  @override
  void initState() {
    initializeColumnsRows();
    super.initState();
  }

  initializeColumnsRows(){
    myDataColumnList[0]=DataColumn(label: Text('My Column Heading'));
    myDataRowList[0]=DataRow(cells: <DataCell>[DataCell(placeholder: true,Text('-'))]);
  }

  addToList(){
   setState(() {
     myDataRowList.add(DataRow(cells: <DataCell>[DataCell(placeholder: true,Text('x1: '+i.toString()))]));
   });
   i = i + 1;
  }

  @override
  Widget build(BuildContext context) {

    return MaterialApp(home: Scaffold(resizeToAvoidBottomInset: true,
        body: LayoutBuilder(
            builder: (BuildContext ctx, BoxConstraints constraints) {
              return Container(child: SingleChildScrollView(child: Column(mainAxisAlignment: MainAxisAlignment.spaceEvenly,mainAxisSize: MainAxisSize.min,
                children: <Widget>[
                  TextButton(onPressed: addToList, child: const Text('addToList')),
                  Table(children: [TableRow(children: <Widget>[ListView.builder(shrinkWrap: true,itemBuilder: (BuildContext context, int index) {
                    return DataTable(columns: myDataColumnList, rows: myDataRowList);
                  },)])]),],),),);})));}
}
flutter
1个回答
0
投票

您尝试访问空列表(myDataColumnList[0] 和 myDataRowList[0])中的索引,这将导致范围错误,因为列表最初是空的。

要解决此问题,您应该使用 .add() 将元素添加到列表中,而不是尝试将值分配给不存在的索引。

类似这样的事情:

initializeColumnsRows(){
  myDataColumnList.add(DataColumn(label: Text('My Column Heading')));
  myDataRowList.add(DataRow(cells: <DataCell>[DataCell(Text('-'))]));
}
© www.soinside.com 2019 - 2024. All rights reserved.