我正在从 api(屏幕 1)加载数据,并在单击项目时打开一个带有新状态小部件的新屏幕(屏幕 2)。但是现在当我从屏幕 2 按返回箭头时,我可以看到屏幕 1,但它再次调用 api。当我们从屏幕 2 回到屏幕 1 时,我不想那样做。
屏幕 1 代码:
class Screen1 extends StatefulWidget {
@override
_Screen1State createState() => _Screen1State();
}
class _Screen1 State
extends State<Screen1> with AutomaticKeepAliveClientMixin<Screen1>
{
@override
Widget build(BuildContext context) {
return FutureBuilder(
future: getdata(), //api calling
builder: (BuildContext context, AsyncSnapshot snapshot) {
switch (snapshot.connectionState) {
case ConnectionState.none:
// TODO: Handle this case.
case ConnectionState.waiting:
//my code
case ConnectionState.active:
// TODO: Handle this case.
case ConnectionState.done:
if (snapshot.connectionState == ConnectionState.done) {
return showdata(snapshot.data);
}
}
});
}
Widget showdata(Response data) {
return ListView.builder(
itemCount: 1,
itemBuilder: (BuildContext context, int index) {
return Container(
decoration: BoxDecoration(color: Colors.white),
child: ListTile(
onTap: () {
Navigator.push(context,
MaterialPageRoute(builder: (_) => Screen2()));
},
)
);
});
@override
// TODO: implement wantKeepAlive
bool get wantKeepAlive => true;
}
屏幕 2:
class Screen2 extends StatefulWidget {
@override
_Screen2State createState() => _Screen2State();
}
class _Screen2State extends State<Screen2> {
@override
Widget build(BuildContext context) {
return Container();
}
}
当我从屏幕 2 返回时,如何防止再次重建屏幕 1?