这就是标题。我的代码需要一个YouTube ID来转到上一页,一个收藏变量,一个上一页按钮来转到上一页,一个下一页按钮来转到下一页,如下面的代码所示。
LearnLevelButton(
color: favoriteButton_0_01_01 ? Colors.orange : Color(0xff7ba6f9),
text: '1-1',
onTap: () async {
await Navigator.pushReplacement(context, MaterialPageRoute(builder: (context) => Video(
YoutubeID: 'asfasdf23',
favorite: favoriteButton_0_01_01,
nextpage: Video(YoutubeID: '', nextpage: null,),
backpage:
favorite2: '_favoriteButton_0_01_01', text1: '', back: '',
),));
}
),您可能认为可以为每个页面创建和使用文件,但您之所以使用这种方法,是因为您必须创建数百个页面。
然而,我很快意识到我的方法是错误的。如果以下面的方式执行,则下一页上的下一页信息和下一页上的下一页信息以这种方式are...In,调用代码不会结束,因为它需要无限的信息。
await Navigator.pushReplacement(context, MaterialPageRoute(builder: (context) => Video(
YoutubeID: 'asfasdf23',
favorite: favoriteButton_0_01_01,
nextpage: Video(YoutubeID: '', nextpage: null,...........),
backpage:
favorite2: '_favoriteButton_0_01_01', text1: '', back: '',
),));没有别的办法了吗?
每页提供的函数转到下一页,转到上一个问题页,然后返回到菜单、YouTube ID和收藏夹变量。
发布于 2021-11-03 16:15:17
我不确定您是如何实现的。请尝试以下操作。创建一个类
class VideoClass{
String youtubeID;
bool fav;
int currentIndex;
VideoClass({this.youtubeID, this.fav, this.currentIndex});
}现在创建一个这个类的列表,比如List<VideoClass> allVideoInfo = [];
根据需要添加信息。allVideoInfo.add(new VideoClass(youtubeID:.....);
现在加载一个只有索引的页面。在页面内部,如果用户点击fav按钮,则调用url,如下面的allVideoInfo[widget.index].youtubeID,然后更改值,如allVideoInfo[widget.index].fav =! allVideoInfo[widget.index].fav;。使用json.encode将此列表转换为字符串,并将其保存在共享首选项中。当您第一次打开应用程序时。使用json.decode从共享首选项中获取值并使用它。
当用户点击下一页时。获取当前索引并将其加1,然后将其传递到下一页。上一页,如当前索引-1。这将是在本地处理所有事情的最佳方法。
https://stackoverflow.com/questions/69828090
复制相似问题