理想情况下,我想按如下方式设置我的Flutter应用程序
-
PageView可在3页和左下导航栏之间向左/向右滑动以作为标签,也可帮助导航
-
持久性appbar位于顶部,带有抽屉和上下文图标
-
之间的页面内容
从图像中可以看出,我主要通过以下方式设置我想要的方式
main.dart - app entry point, set up appbar, set up pageview with children for new PeoplePage, new TimelinePage, new StatsPage
people_page.dart
timeline_page.dart
stats_page.dart
These three pages just deliver the content to the PageView children as required.
这是实现这一目标的正确方法吗?表面上它工作正常 . 我遇到的问题是,在人员页面上,我想实现一个可更改appbar Headers /颜色as in this example的可选列表,但appbar是在主页面上设置的 . 我可以全局访问appbar吗?
我可以为每个页面构建一个新的appbar,但我不希望在切换页面时刷新新的appbar . 我更喜欢appbar看起来持久,只有内容滑动 .
任何关于实现这一目标的最佳方法的指导将不胜感激 .
2 回答
我汇总了一个快速示例,说明如何从屏幕向下与页面进行通信,然后再返回 . 这应该可以解决您的问题 .
https://gist.github.com/slightfoot/464fc225b9041c2d66ec8ab36fbdb935
解决这个问题的一种方法是将AppBar Headers 和背景颜色作为状态变量,并在PageView中将onPageChanged设置为函数 . 此函数接受页面int并基于页面int将 Headers 和颜色的状态设置为所需的值 . 对于多选列表,您将 Headers 设置为保留所选值的变量,可以将其保留为主页面中的状态变量,并将其传递给子组件 . 您可以使用任何状态管理策略,这应该可以正常工作 .
onPageChanged函数示例:
因此,对于多选案例,不是将 Headers 设置为某个常量,而是将 Headers 设置为包含所选选项值的变量 .
完整代码在这里:
您可以根据需要改进此代码 . 希望这对某些方面有帮助 . 如果有什么我可以改进这个答案,请告诉我 .