flutter - 我想调用绘图仪的下一页。但是下一页所需的变量也是下一页的信息
问题描述
这就是标题。我的代码需要一个 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: '',
),));
}
),
您可能认为您可以为每个页面创建和使用文件,但您使用此方法是因为您必须创建数百个页面。
然而,我很快意识到我的方法是错误的。如果按以下方式执行,则下一页的下一页信息和下一页的下一页信息是……这样,调用代码不会结束,因为它需要无穷无尽的信息。
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 和收藏变量。
解决方案
我不确定你是如何实现的。请尝试以下方法。创建一个类
class VideoClass{
String youtubeID;
bool fav;
int currentIndex;
VideoClass({this.youtubeID, this.fav, this.currentIndex});
}
现在创建此类的列表,例如List<VideoClass> allVideoInfo = [];
根据需要添加信息。allVideoInfo.add(new VideoClass(youtubeID:.....);
现在加载一个只有索引的页面。并在页面内部调用如下所示的 url
allVideoInfo[widget.index].youtubeID
如果用户单击 fav 按钮,则更改值,如allVideoInfo[widget.index].fav =! allVideoInfo[widget.index].fav;
. 使用 json.encode 将此列表转换为字符串并将其保存在共享首选项中。当您第一次打开应用程序时。使用 json.decode 从共享首选项中获取值并使用它。
当用户点击下一页时。获取当前索引并将其加 1 并将其传递到下一页。上一页像当前索引 -1。这将是在本地处理所有事情的最佳方法。
推荐阅读
- javascript - 在某个索引处循环遍历数组
- winapi - 获取资源管理器的滚动条位置标记的句柄或 UIA ID
- sql - 基于月份的 Oracle SQL 数据迁移行到列因类型而失败
- python - 向网络中的边缘添加权重
- javascript - 如何解析或解释给定到 console.log() 的参数
- c# - 使用正则表达式获取文件名的中间部分
- ios - 在 SwiftUI 中搜索时更改 List/ForEach 循环中的单元格的正确动画?
- ibm-midrange - ERRMSG 不显示在 AS400 的 DSPF 中
- c# - 如何在订阅者上实现 Prism EventAggregator 事件队列
- google-cloud-platform - GCP 指标资源管理器中的计数器指标