Показывать пользовательский вид модально на флаттере - PullRequest
0 голосов
/ 24 мая 2019

Я пытаюсь отобразить представление модально, вроде диалогового окна с предупреждением, за исключением того, что мне нужен полный контроль над ним (которого у меня не будет с классическим диалоговым окном предупреждения).

Прямо сейчас я могу сделать это:

 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 делает много вещей, которые мне не нужны / не нужны. Если я дам ему alerttdialog, то оно будет прекрасно выглядеть для оповещения, но я не могу ничего поделать с ним.

Вот как выглядит мой 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:?

1 Ответ

1 голос
/ 24 мая 2019

Вы можете использовать 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: ...
    );
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...