是否可以缓存小部件以继续操作?

问题描述 投票:0回答:1

我正在使用getbody()方法获取应用程序主体,并且getbody()返回一个窗口小部件。如果我更改变量ct count,则getbody()将返回不同的窗口小部件,并且如果我设置了变量,则每个窗口小部件都将存放在Listqueue<MyPage()>中ct值1,它将从位置1的列表中返回小部件,如果我设置变量ct 2,则它将返回对应的小部件。

但是问题出在每个小部件中,我正在执行api调用,但是当我重用该小部件时,它再次调用API调用,以及为什么这是在第一次使用后调用,以及当我重用小部件时如何停止调用api

ListQueue<Page> page1, page2, page3, page4;
  _AppFramePageState() {

    page1 = ListQueue();
    page1.add(Page(widget: AppHomePage(), title: "Home Page"));
    page2 = ListQueue();
    page2.add(
        Page(widget: TemplesListing(), title: "Temple listing"));
    page3 = ListQueue();
    page3.add(Page(widget: AppCommunities(), title: "Communities"));
    page4 = ListQueue();
    page4.add(Page(widget: AppVideos(), title: "Media"));
  }

如果用户单击工具栏上的购物车按钮,则我将向page1列表中添加更多值,如果用户单击后退按钮,则我将从page1列表中删除最后一项

     Widget getBody() {
 //This code is solved my 50% issue but renaming 50% is there. How to solve this issue?
        return IndexedStack(
          index: _selectedIndex,
          children: <Widget>[
          page1.last.widget,
          page2.last.widget,
          page3.last.widget,
          page4.last.widget
        ],);<br>
//This is the code i used first time 
        switch (_selectedIndex) {
          case 0:
            return page1.last.widget;
          case 1:
            return page2.last.widget;
          case 2:
            return page3.last.widget;
          case 3:
            return page4.last.widget;
        }
      }

class Page{
  Widget widget;
  String title;
  Page({this.title,this.widget});
}

注意:所有小部件均为StatefulWidget

flutter dart flutter-layout
1个回答
0
投票

通常,不能重复使用小部件。

您可以通过比较窗口小部件的旧状态和新状态来手动重用缓存窗口小部件。这很长,我不认为您应该遵循它。

© www.soinside.com 2019 - 2024. All rights reserved.