Flutter Navigator - 从页面堆栈中交换页面

cs *_*guy 5 flutter

我的情况有点乏味。我正在向导航器推送 2 页

甲乙

B 被推到最后。

由于某些原因。我不想弹出 B 从 B 导航到 A。我想替换/交换它们。原因在于国家。我想保留 A 和 B 页面的状态,因为有些小部件的构建成本非常高(Unity 视图小部件)。从 B 如何使用 Navigator 以便在不破坏我的页面的情况下我可以将 B 与 A 交换?

这是流程:

  • A 作为默认页面打开。

  • B被推

    Navigator.of(context).pushNamed();

    页面堆栈是 A - B

  • 从 BI 想要导航到 A 同时仍然保持 B 页面活着。

  • -经过一些神奇的操作后,我失踪了 -

  • 页面堆栈是 B - A。用户看到页面 A。没有页面被破坏。他们被交换了。

有没有办法在 Flutter 中做到这一点?

Sae*_*kri 3

您可以使用PageView简单的方法并像这样设置配置:

PageController _pagerController = PageController(keepPage: true);

PageView(
      physics: NeverScrollableScrollPhysics(),
      controller: _pagerController,
      children: [
         Page_A(),
         Page_B(),
      ],
),
Run Code Online (Sandbox Code Playgroud)

对于页面之间的切换:

goNextPage() {
  _pagerController.animateToPage(
    currentPage + 1,
    duration: Duration(milliseconds: 500),
    curve: Curves.ease,
  );
}

goPrevPage() {
  _pagerController.animateToPage(
    currentPage - 1,
    duration: Duration(milliseconds: 500),
    curve: Curves.ease,
  );
}
Run Code Online (Sandbox Code Playgroud)

我希望它对你有用。