首页 > 解决方案 > 我想调用绘图仪的下一页。但是下一页所需的变量也是下一页的信息

问题描述

这就是标题。我的代码需要一个 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 和收藏变量。

标签: flutterdartflutter-layoutflutter-webflutter-navigation

解决方案


我不确定你是如何实现的。请尝试以下方法。创建一个类

   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。这将是在本地处理所有事情的最佳方法。


推荐阅读