【问题标题】:Using a FloatingActionButton on different pages if using a Backdrop?如果使用背景,在不同页面上使用 FloatingActionButton?
【发布时间】:2019-12-03 03:20:00
【问题描述】:

我正在学习 Flutter 并使用他们提供的 Shrine 演示应用 (https://codelabs.developers.google.com/codelabs/mdc-101-flutter/) 作为尝试其他小部件的基础。 我正在使用 Shrine 菜单进行导航,而不是 Drawer。

我有几个不同的路由/页面,我希望每个路由/页面都有自己的 FloatingActionButton,在每个路由/页面上执行不同的功能,其中一些没有按钮,而其他一些可能有一个 BottomAppBar。

为了使用 FloatingActionButton,它需要作为参数传递给 Scaffold,但 Shrine 背景只有一个 Scaffold,它还保存着选择菜单选项的状态。

如果每个页面都有自己的 Scaffold,那么这会很容易,但是我会失去 Shrine 应用程序所拥有的酷菜单。

如何将 Shrine 样式菜单用于多个不同的页面,每个页面都有自己独特的 FloatingActionButton 或 BottomAppBar?

我应该将菜单状态转移到其他地方吗?我是否应该以某种方式将子小部件中的按钮操作传递回背景的脚手架(如果是,如何)?我应该放弃并使用抽屉吗?

【问题讨论】:

    标签: flutter


    【解决方案1】:

    您可以使用单个页面中的“已定位”小部件将按钮定位在页面的右下角,而不是在 Scaffold 中使用 FloactingActionButton 属性。

    例如:

             body: Stack( // must add Stack widget
                   chidren: <Widget> [
                   .
                   .
                   . // your other widgets on this page
                   .
                    Positioned(
                              right: 10,
                              bottom: 10,
                              child: FloatingActionButton(
                                onPressed: () => yourFunction,
                                ),
                                child: Icon(Icons.add),
                                backgroundColor: Colors.red,
                              ),
                            ),
                ],
            );
    

    希望这会有所帮助:)

    【讨论】:

    • 很好,我不知道你可以像这样结合 Positioned 和 Stack。为了在这方面做得更好,我应该阅读 Flutter 文档的哪一部分?如果我想为另一个视图添加一个 BottomAppBar,我该怎么做呢?我需要重构还是最好只在 Scaffolds 中使用 BottomAppBar?
    • 如果您将底部、左侧和右侧设置为 0,看起来也可以在堆栈中的定位中使用 BottomAppBar。感觉就像我这样做是在与颤振作斗争。有没有一种“最佳实践”的方式来做到这一点,而不仅仅是切换到抽屉并在每个页面上都有单独的脚手架?
    • 我以前从未使用过BottomAppBar,所以我无法评论将它与“定位”一起使用是否是一种糟糕的编码习惯。而且我没有阅读解决方案的文档,只是通过将事物组合在一起来反复试验。就像玩乐高积木一样:)
    • 感谢您的帮助!我得自己想办法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-08
    • 1970-01-01
    • 1970-01-01
    • 2017-11-28
    • 2021-10-27
    • 1970-01-01
    • 2017-01-27
    相关资源
    最近更新 更多