在Flutter上以模态显示自定义视图

时间:2019-05-24 08:51:29

标签: view flutter dialog modal-dialog widget

我试图以模态方式显示视图,有点像警报对话框,但是我需要对其进行完全控制(传统的警报对话框不会对此进行控制)。

现在,我可以执行以下操作:

volatile

我对视图(StationDetail)拥有完全控制权,但这是全屏推送,而不是模式推送。而且我也不确定这是否是正确的方法。

或者我可以做到

 onTap: () {
            Navigator.push(
              context,
              MaterialPageRoute(builder: (context) => StationDetail()),
            );
          }));

在这种情况下,它是模态,但是 onTap: () { showDialog( context: context, builder: (BuildContext context) { return Container( height: 100, width: 100, child: Text("This is a test"), ); }); 做了很多我不想要/不需要的东西。如果我给它一个Alertdialog,它看起来很好,但是我真的不能对其进行任何自定义。

这是我的StationWidget的样子:

showDialog

所以我的问题如下: 我该如何在视图上以模态方式显示来自OnTap的自定义小部件:?

1 个答案:

答案 0 :(得分:1)

您可以使用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: ...
    );
  }
}