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

Posted

技术标签:

【中文标题】Flutter:如何在对话框中使用路由器【英文标题】:Flutter : How to use router on dialog 【发布时间】:2021-12-31 10:59:48 【问题描述】:

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

当点击重复时,我想用户导航器在对话框中推送一个页面,如下所示

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

【问题讨论】:

任何机构有解决方案? 【参考方案1】:

您可以使用 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")),
                        )
                      ],
                    ),
                  )),
        ),
      ),
    );
  

【讨论】:

这个答案很好,感谢您的帮助 很高兴为您提供帮助...:)【参考方案2】:

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

【讨论】:

我也想过。但是内容多了,就很难维护了。所以我认为对话中的路由器是最好的方法:D,感谢您的帮助!

以上是关于Flutter:如何在对话框中使用路由器的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Flutter 中使用路由制作持久抽屉?

使用 Flutter 导航和路由时如何保持 BottomNavigationBar

如何在 Bloc Login Flutter 中使用带有身份验证的 NavigationDrawer 路由

如何使用 GetX 包管理 Flutter Web URL 路由?

Flutter:使用包装器时如何使用Routes在页面之间进行路由

Flutter 中的命名路由如何消除重复?