微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

flutter 热重载其他页面

如何解决flutter 热重载其他页面

我是Flutter的初学者。
文字(printA())

打印A(){打印(“A”);返回 "A";}
Flutter的A页执行,热重载后在控制台显示“A”。然后导航到页面 B 并将“B”打印到控制台。这时候,如果我热重载,控制台上不仅会显示“B”,还会显示“A”。如果我重复屏幕导航,控制台上显示的 A 和 B 的数量会随着一次热重载而不断增加。这是什么原因?

class PageA extends StatelessWidget {
  const WordPage({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      drawer: MyDrawer(),appBar: AppBar(
        title: Text("PageA"),),body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,children: <Widget>[
            Text(printA()),],);
  }
}

printA() {
  print("A");
  return "A";
}

enter image description here


此外,如果我只是在模拟器中进行屏幕导航而不进行热重新加载,则控制台上将像往常一样仅显示 A 页上的“A”和 B 页上的“B”。我用的是 m1 mac。

解决方法

使用堆栈规则管理一组子小部件的小部件。

许多应用程序在其小部件层次结构的顶部附近都有一个导航器 为了使用最多的覆盖显示他们的逻辑历史 最近访问的页面在旧页面的顶部可视化。使用这个 模式让导航器在视觉上从一页过渡到 另一种方法是在叠加层中移动小部件。同样,该 导航器可用于通过定位对话框来显示对话框 当前页面上方的小部件。

这是来自文档 https://api.flutter.dev/flutter/widgets/Navigator-class.html 您的新页面“B”就在上一页“A”的上方,该页面从未被销毁。并且热重载导致页面“A”的构建方法再次运行并打印“A”。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。