是否有任何代码示例显示如何使用独立于导航器小部件的叠加层?
在我们的应用中,我们不希望 TitleBar/AppBar 成为主导航堆栈的一部分,它应该位于窗口的顶部,并且位置固定。
TitleBar 需要访问 Overlay,因为它有各种工具提示和弹出面板。
我唯一知道这样做的是双包装 Navigator 或 MaterialApp,它们都很难闻。我想直接使用 Overlay,但缺乏关于如何实现它的任何指导。
寻找 Overlay 的源代码并没有太大帮助,我不想深入研究 MaterialApp 的数千行 src 代码。
[编辑] 稍微看一下 Navigator 源代码,Overlay 似乎直接与 PageRoutes 耦合,这真是一种耻辱:'(如果有一个简单的 Overlay(child: )
我们可以直接使用就好了。
最佳答案
有一个名为 flutter_portal 的用于使用叠加层的声明包这让您可以将叠加显示为小部件树的一部分。
PortalEntry(
visible: true,
portal: Material(
elevation: 8,
child: IntrinsicWidth(
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
ListTile(title: Text('option 1')),
ListTile(title: Text('option 2')),
],
),
),
),
child: RaisedButton(...),
)
使用此设置,您可以使用单个 bool 值(“可见”)打开和关闭叠加层,并且您不再需要调用 Overlay.insert 和 Overlay.remove。
关于flutter - 如何在没有 Navigator/App 的情况下使用 Overlay?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66425271/