我有一个用于在页面中导航的状态完整小部件列表。但当我试图在Navigator.push((中推送这些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,),
.............
]
这是推送方法:
onPress: () {
Navigator.push(context, MaterialPageRoute(builder: (context) => fullBodyNavigation[0],),);
},
我在stackoverflow中找到了一个解决方案,它说我必须使用"数据";fullBodyNavigation.data[0]";。但是ide说";getter数据未定义";。有人能帮忙吗?
这是该解决方案的链接:在初始化期间读取静态变量|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
中只使用类名访问它。这应该做你的事情,也让编译器高兴