我正在尝试开发一个具有透明背景的屏幕,以显示前一个屏幕(导航堆栈中的前一个屏幕)。
这是我到目前为止所拥有的。我试图通过将Scaffold的主体包裹在不透明对象中来调整其不透明性,但这并没有影响背景的不透明性。我可能通过使用屏幕而不是弹出栏或菜单以错误的方式进行处理-我是Flutter的新手,可以使用一些指导和建议!谢谢!
return new Scaffold(
body: new Opacity( // This controls the opacity of the buttons.
opacity: 1.0,
child: Column(
children: <Widget>[
Row(
children: <Widget>[
_actionButton('email', '/home'), // _actionButton returns a rounded button with the route to push to the navigation stack.
_actionButton('sms', '/smsRedirect'),
]
),
Row(
children: <Widget>[
_actionButton('jira', '/jiraRedirect'),
_actionButton('slack', '/slackRedirect')
]
),
Row(
children: <Widget>[
_actionButton('override', '/override')
]
),
Row(
children: <Widget>[
_exitButton() // _exitButton returns a button to return to the home screen.
]
)
]
)
)
);
答案 0 :(得分:0)
当您推送页面时,默认情况下它使用的是PageRouteBuilder
,它的背景不透明-请参见the source。
很难从代码中准确地判断出您在做什么,但是如果您想进行模式对话框,最好使用showDialog
函数和a Dialog
。
如果您绝对必须使用页面,可以这样做,但实际上必须重写PageRouteBuilder
才能使页面不透明。
答案 1 :(得分:0)
您将需要创建一个自定义PageRoute。看看这个Stack Overflow的答案,我想这就是您要搜索的内容:
Transparent PageRoute in Flutter for displaying a (semi-) transparent page