Можно ли отключить тень / наложение в диалоге? - PullRequest
0 голосов
/ 18 декабря 2018

Мне интересно, есть ли способ отключить эффект тени / наложения в диалоге?По сути, я могу получить диалоговое окно, похожее на правую часть этого изображения:

Моя лучшая попытка - использовать стексодержащий мой пользовательский диалог, который затем переключается для отображения или нет, но тогда у меня были проблемы с возможностью прокрутки собственного ListView каждого пользовательского диалога без его испорчения другого.Я знаю, что это противоречит рекомендациям по дизайну материалов, но я пытаюсь воспроизвести пользовательский интерфейс на dribble.com.

Спасибо!

Редактировать:

Мне почти удалось добиться этого эффекта, отредактировав метод showGeneralDialog, но тень все еще остается:

await showGeneralDialog(
    context: context,
    pageBuilder: (BuildContext buildContext,
        Animation<double> animation,
        Animation<double> secondaryAnimation) {
      return SafeArea(
        child: Builder(builder: (context) {
          return AlertDialog(
             content: Container(
                 color: Colors.white,
                 width: 150.0,
                 height: 150.0,
                 child: Center(child: Text("Testing"))));
        }),
      );
    },
    barrierDismissible: true,
    barrierLabel: MaterialLocalizations.of(context)
        .modalBarrierDismissLabel,
    barrierColor: null,
    transitionDuration:
        const Duration(milliseconds: 150));

Редактировать 2: Просто изображение, иллюстрирующее изменение в приведенном выше коде, показывающее, что я до сих пор был в состоянии отключить наложение темноты, но в диалоге все еще есть возвышение, от которого я не могу избавиться:

enter image description here

Редактировать 3: Я думаю, что если я смогу изменить AlertDialog в showGeneralDialog Builder, тогда я смогузаставить его работать, но у меня возникают проблемы при вставке чего-то, что Material, но не занимает весь экран.

Ответы [ 2 ]

0 голосов
/ 29 июня 2019

Друг, установите параметр «высота» = 0. Это работа.

AlertDialog(
 elevation: 0,
),
0 голосов
/ 19 декабря 2018

Работай!Вы должны создать свой собственный диалог, такой как Widget, в Builder метода showGeneralDialog вместе с установкой barrierColor в null:

enter image description here

await showGeneralDialog(
  context: context,
  pageBuilder: (BuildContext buildContext,
      Animation<double> animation,
      Animation<double> secondaryAnimation) {
    return SafeArea(
      child: Builder(builder: (context) {
        return Material(
            color: Colors.transparent,
            child: Align(
                alignment: Alignment.center,
                child: Container(
                    height: 200.0,
                    width: 250.0,
                    color: Colors.white,
                    child:
                        Center(child: Text('Testing')))));
      }),
    );
  },
  barrierDismissible: true,
  barrierLabel: MaterialLocalizations.of(context)
      .modalBarrierDismissLabel,
  barrierColor: null,
  transitionDuration: const Duration(milliseconds: 150));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...