如何使页面的背景半透明以显示Flutter中的上一个屏幕?

时间:2018-07-19 22:01:41

标签: mobile dart flutter opacity transparent

我正在尝试开发一个具有透明背景的屏幕,以显示前一个屏幕(导航堆栈中的前一个屏幕)。

这是我到目前为止所拥有的。我试图通过将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.
          ]
        )
      ]
    )
  )
);

2 个答案:

答案 0 :(得分:0)

当您推送页面时,默认情况下它使用的是PageRouteBuilder,它的背景不透明-请参见the source

很难从代码中准确地判断出您在做什么,但是如果您想进行模式对话框,最好使用showDialog函数和a Dialog

如果您绝对必须使用页面,可以这样做,但实际上必须重写PageRouteBuilder才能使页面不透明。

答案 1 :(得分:0)

您将需要创建一个自定义PageRoute。看看这个Stack Overflow的答案,我想这就是您要搜索的内容:

Transparent PageRoute in Flutter for displaying a (semi-) transparent page