Flutter:如何在对话框中使用路由器

Flutter : How to use router on dialog

首先我有一个打开对话框的按钮

单击重复时,我希望用户导航器在这样的对话框上推送一个页面

我怎么不能用 flutter 做到这一点?感谢您的帮助!

您是否尝试过更改对话框的内容而不是使用路由器?就像使用一个状态变量,当你点击重复更新对话框内容时它会改变,然后当你点击保存时恢复它

您可以将 PageView.builderPageController 一起使用,以达到预期的效果。我正在分享一个参考 example 你可以根据需要修改它。

class WelcomeScreen extends StatefulWidget {
  @override
  _WelcomeScreenState createState() => _WelcomeScreenState();
}

class _WelcomeScreenState extends State<WelcomeScreen> {
  PageController _controller = PageController();
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Pagination Example"),
      ),
      body: Padding(
        padding: EdgeInsets.all(24.0),
        child: Center(
          child: PageView.builder(
              controller: _controller,
              itemCount: 2,
              itemBuilder: (context, index) => Scaffold(
                    appBar: AppBar(
                      title: Text("Page $index"),
                      leading: index == 1
                          ? IconButton(
                              onPressed: () {
                                _controller.previousPage(
                                    duration: Duration(milliseconds: 100),
                                    curve: Curves.ease);
                              },
                              icon: Icon(Icons.arrow_back),
                            )
                          : null,
                    ),
                    body: Column(
                      children: [
                        Text("Content of Page $index"),
                        Visibility(
                          visible: index == 1 ? false : true,
                          child: ElevatedButton(
                              onPressed: () {
                                _controller.nextPage(
                                    duration: Duration(milliseconds: 100),
                                    curve: Curves.ease);
                              },
                              child: Text("Next Page")),
                        )
                      ],
                    ),
                  )),
        ),
      ),
    );
  }
}