View 在颤振上以模态方式显示自定义视图

View 在颤振上以模态方式显示自定义视图,view,flutter,dialog,modal-dialog,widget,View,Flutter,Dialog,Modal Dialog,Widget,我试图以模态的方式显示一个视图,有点像一个警报对话框,只是我需要对它进行完全控制(我不会使用经典的警报对话框) 现在,我可以这样做: onTap: () { Navigator.push( context, MaterialPageRoute(builder: (context) => StationDetail()), ); })); 我可以完全控制视图(Sta

我试图以模态的方式显示一个视图,有点像一个警报对话框,只是我需要对它进行完全控制(我不会使用经典的警报对话框)

现在,我可以这样做:

 onTap: () {
            Navigator.push(
              context,
              MaterialPageRoute(builder: (context) => StationDetail()),
            );
          }));
我可以完全控制视图(StationDetail),但它是全屏推送,而不是模式推送。而且我也不确定这是正确的方法

或者我可以这样做

 onTap: () {
            showDialog(
                context: context,
                builder: (BuildContext context) {
                  return Container(
                    height: 100,
                    width: 100,
                    child: Text("This is a test"),
                  );
                });
在这种情况下,这是一种模式,但是
showDialog
做了很多我不想要/不需要的事情。如果我给它一个alertdialog,它看起来可以发出警报,但是我真的不能对它做任何定制

以下是my StationWidget的外观:

class StationDetail extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.transparent,
      appBar: AppBar(
        title: Text("Second Route"),
      ),
      body: Center(
        child: RaisedButton(
          onPressed: () {
            Navigator.pop(context);
          },
          child: Text('Go back!'),
        ),
      ),
    );
  }
}
因此,我的问题如下:
如何在视图上显示来自OnTap的自定义小部件:?

您可以使用PageRouteBuilder:

Navigator.of(context).push(
              PageRouteBuilder(
                opaque: false,
                pageBuilder: (BuildContext context, _, __) {
                  return StationDetail();
                },
              ),
            );
您的StationDetail小部件需要透明

class StationDetail extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.transparent,
      child: ...
    );
  }
}

您可以使用PageRouteBuilder:

Navigator.of(context).push(
              PageRouteBuilder(
                opaque: false,
                pageBuilder: (BuildContext context, _, __) {
                  return StationDetail();
                },
              ),
            );
您的StationDetail小部件需要透明

class StationDetail extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.transparent,
      child: ...
    );
  }
}

我想这不是真的。如果我这样做了,我的导航栏就好像出现了一个全屏视图(在iOS上,后退按钮出现在左上角)。有没有办法让导航栏完全不改变?导航栏在StationDetail页面上吗?或者你想从哪个页面导航?将这个自动添加到你的应用程序栏Emplyleading:False我想这不是真的。如果我这样做了,我的导航栏就好像出现了一个全屏视图(在iOS上,后退按钮出现在左上角)。有没有办法让导航栏完全不改变?导航栏在StationDetail页面上吗?或者你想从哪个页面导航?将这个自动添加到你的应用程序栏Emplyleading:False你应该看看它看起来很有希望@塞巴斯蒂安:你应该看看那看起来很有希望@塞巴斯蒂安