flutter - setter/getter 导致最大调用堆栈大小超出抖动

标签 flutter dart

我有以下小部件:

class VennDiagramWidget extends StatefulWidget {
  VennDiagramWidget(selectedGeneLists);

  List<GenesListObjIndexed> get selectedGeneLists => this.selectedGeneLists;

  @override
  _VennState createState() => _VennState();
}

class _VennState extends State<VennDiagramWidget> {

  List<GenesListObjIndexed> _selectedGeneLists;

  @override
  initState() {
    _selectedGeneLists = widget.selectedGeneLists;
  }
此窗口小部件通过以下方式由另一个窗口小部件初始化:
.
.
.
Navigator.of(context).push(MaterialPageRoute(
                  builder: (context) => VennDiagramWidget(selectedGeneLists)));
我在这行上收到Maximum call stack size exceeded的错误:_selectedGeneLists = widget.selectedGeneLists;内的initState
据我所知,该代码应该使用我在第二个片段中指定的VennDiagramWidget构造类selectedGeneLists,并且当我调用此类的getter时,我应该获得完全相同的变量。
我究竟做错了什么?

最佳答案

问题是,当您调用getter selectedGeneLists时,它再次调用了自己

//                       calling itself ⬇
get selectedGeneLists => this.selectedGeneLists;
您需要在小部件类中声明selectedGeneLists变量
这应该工作
class VennDiagramWidget extends StatefulWidget {
  final selectedGeneLists;
  VennDiagramWidget(this.selectedGeneLists);

  @override
  _VennState createState() => _VennState();
}
或者如果您想要变量private
class VennDiagramWidget extends StatefulWidget {
  final _selectedGeneLists;
  VennDiagramWidget(this._selectedGeneLists);

  List<GenesListObjIndexed> get selectedGeneLists => this._selectedGeneLists;

  @override
  _VennState createState() => _VennState();
}

关于flutter - setter/getter 导致最大调用堆栈大小超出抖动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63992775/

相关文章:

flutter - SingleChildScrollView无法与 ListView 生成器一起使用

tfs - 如何以一些通用格式发布 Flutter 测试结果以显示在 TFS/VSTS 中?

android - 如何使用 Flutter 使用下拉建议进行文本输入

Flutter:根据 Firestore 查询更改 ListTile

flutter - 如何获取当前日期(不含小时和分钟)?

dart - 将Web组件添加到DOM

android - 在 Flutter 中处理 Cookie

flutter - Leading小部件和title小部件之间的默认填充是什么?

dart - 如何使用英雄在 2 个不同的按钮之间有相同的页面目标

dart - 如何在另一个小部件的子属性中传递小部件列表?