flutter GetX小部件数据的初始化位置错误

ztigrdn8  于 2023-05-29  发布在  Flutter
关注(0)|答案(1)|浏览(139)

我用的是GetX。我需要为列表可见性生成数据。

class TableController extends GetxController {

  List<bool> columnVisibility = []; 
  
  @override
  void onInit() async {
    super.onInit();
    columnVisibility = List.generate(getColumns.length, (index) => true);
  }
      List<GridColumn> get getColumns {
        return <GridColumn>[
                          GridColumn(
                            columnName: 'name',
                            visible: columnVisibility[0],
                            label: Container(
                              padding: EdgeInsets.all(16.0),
                              alignment: Alignment.centerRight,
                              child: Text('name'),
                            ),
                          )
                        ];

      }

}

错误:

Error: RangeError (index): Index out of range: no indices are valid: 0

线:

visible: columnVisibility[0]

所以我在错误的地方执行init。

xeufq47z

xeufq47z1#

onInit方法中,您正在通过List.generate初始化columnVisibility列表,List.generate正在使用getColumns,而getColumns已经在使用columnVisibility列表,因此很明显它会抛出错误,因为它没有任何数据,并且您正在尝试使用0索引从列表中访问值
所以你可以改变这条线

visible: columnVisibility[0],

visible: columnVisibility.length > 1 ? columnVisibility[0] : false, 

//assuming default value false to return if we don't have

确切地说,我没有得到你想达到的目标,但问题只是因为它

相关问题