我有一个有状态的小部件列表,可用于从页面导航。但是当我尝试在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
中使用类名进行访问。那应该做你的事情,也使编译器高兴