在初始化期间读取静态变量 => Flutter Navigator.push



我有一个用于在页面中导航的状态完整小部件列表。但当我试图在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中只使用类名访问它。这应该做你的事情,也让编译器高兴

相关内容

最新更新