我有一个有状态的小部件列表,可用于从页面导航。但是当我尝试在Navigator.push()中推送这些List元素时,它说“在初始化期间读取静态变量”。
这是 list :

List<ActionScreen> fullBodyNavigation = [
          ActionScreen(title: 'demo data', number: 20, gifDirectory: "assets/gifs/demodata.gif", currentList: fullBodyNavigation,
              frameMin: 0, frameMax: 17, milisecondAnimation: 800, milisecondTimer: 800, sessionNumber: 1,),
          ActionScreen(title: 'demodata', number: 15, gifDirectory: "assets/gifs/demodata.gif", currentList: fullBodyNavigation,
              frameMin: 0, frameMax: 30, milisecondAnimation: 1200, milisecondTimer: 1200, sessionNumber: 2,),
          ActionScreen(title: 'demodata', number: 15, gifDirectory: "assets/gifs/demodata.gif", currentList: fullBodyNavigation,
              frameMin: 0, frameMax: 2, milisecondAnimation: 2000, milisecondTimer: 2000, sessionNumber: 3,),
          .............
        ]
这是push方法:
onPress: () {
      Navigator.push(context, MaterialPageRoute(builder: (context) => fullBodyNavigation[0],),);
},
我在stackoverflow中发现了一个解决方案,该解决方案说我必须使用“fullBodyNavigation.data [0]”之类的“数据”。但ide说“未定义getter数据”。有人可以帮忙吗?
这是该解决方案的链接:Reading static variable during its initialization | Flutter

最佳答案

问题在于您创建导航页面列表的方式:

    List<ActionScreen> fullBodyNavigation = [
        ActionScreen(title: 'demo data',
          number: 20,
          gifDirectory: "assets/gifs/demodata.gif",
          currentList: fullBodyNavigation,
          frameMin: 0,
          frameMax: 17,
          milisecondAnimation: 800,
          milisecondTimer: 800,
          sessionNumber: 1,
        ),
        .............
    ]
为什么要将currentList: fullBodyNavigation传递给ActionScreen。因此,基本上,您正在尝试访问列表本身内的列表。鸡肉和鸡蛋问题。这是什么编译器警告您该错误。
要解决此问题,请不要将currentList: fullBodyNavigation传递给ActionScreen。而是将fullBodyNavigation设置为静态字段,并在ActionScreen中使用类名进行访问。那应该做你的事情,也使编译器高兴

10-06 09:38