Flutter 如何阻止有状态小部件重新初始化

Flutter 如何阻止有状态小部件重新初始化,flutter,dart,future,Flutter,Dart,Future,我有两个脚手架。第一个是菜单,第二个是位置 Menu -> Places 菜单/1st scaffold在initState()上获取api/未来数据。我试图实现的是能够进入第二/位置页面,然后当我返回菜单页面时,不得再次重新加载未来/初始状态 第一页(菜单)scaffold有如下功能,可以完美地工作: //First Scaffold Future myFuture; bool _loading; @override void initState() { super

我有两个脚手架。第一个是菜单,第二个是位置

Menu -> Places
菜单/1st scaffold在
initState()
上获取api/未来数据。我试图实现的是能够进入第二/位置页面,然后当我返回菜单页面时,不得再次重新加载未来/初始状态

第一页(菜单)scaffold有如下功能,可以完美地工作:

//First Scaffold

Future myFuture;
  bool _loading;

@override
  void initState() {
    super.initState();
    myFuture = _getService();
    _loading = true;
  } 
第二个页面/scaffold返回到上一个页面(按下此按钮时重新加载上一个页面的initState):


那么,当返回到该屏幕时,如何阻止它初始化状态?

原因是您正在添加
菜单的新实例

您将得到以下堆栈
菜单页面|放置页面|菜单页面

因此,此时您有两个菜单页面,一个在位置之前,一个在页面之后。 正确的方法是弹出
Places
页面,以便返回
菜单
页面

你需要这样做 从菜单页面,您应该使用以下代码导航到位置
然后,它会弹出一个空白的屏幕帖子,上面写着你用来进入Places页面的代码。我刚刚发布了它。请检查我的编辑。我猜你正在用位置取代菜单,这就是为什么你有空白屏幕。不要在菜单中使用
pushPlacement
,请使用
push
。是!!非常感谢,我需要像你所说的那样更新这两个页面,这对我来说是有意义的,知道了就行,谢谢。
//Second Scaffold


Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.grey[900],
      appBar: AppBar(
        leading: IconButton(
          icon: Icon(Icons.arrow_back, color: Colors.black),
          onPressed: () {
            Navigator.pop(context);
          },
        ),
icon: Icon(Icons.arrow_back, color: Colors.black),
          onPressed: () {
            Navigator.pop(context);
          },
     Navigator.of(context).push(
                MaterialPageRoute(builder: (context) => Places()));