Как удалить пустое пространство вокруг шоумена

#flutter #dart #flutter-layout

Вопрос:

Вокруг моего всплывающего окна есть пустое пространство, реализованное в onLongPress(). Кажется, я никак не могу от этого избавиться. Код выглядит следующим образом:

 Expanded(
        child: Padding(
          padding: const EdgeInsets.all(8.0),
          child: GestureDetector(
            onTap: () {
              debugPrint('Container clicked');
            },
            onLongPress: () {
              showMenu(
                context: context,
                position: RelativeRect.fromLTRB(0, 0, 0.0, 0.0),
                items: <PopupMenuEntry>[
                  PopupMenuItem(
                    child: getPopUpView(context),
                  ),
                ],
              );
            },
            child: Column( ...
 

И в методе getPopUpView у нас есть :

     Container getPopUpView(BuildContext context) {
  return Container(
    width: 278,
    decoration: BoxDecoration(
      borderRadius: BorderRadius.circular(5),
      color: BPColor.grey1,
    ),
    child: Column(
      children: [
        popUpViewRows(
            context, AppLocalizations.of(context).markText, Assets.iconStar),
        Divider(
          color: BPColor.black,
        ),
        popUpViewRows(context, AppLocalizations.of(context).archiveText,
            Assets.iconArchive),
        Divider(
          color: BPColor.black,
        ),
        popUpViewRows(
            context, AppLocalizations.of(context).selectText, Assets.iconStar),
        Divider(
          color: BPColor.black,
        ),
        popUpViewRows(context, AppLocalizations.of(context).function2Text,
            Assets.iconStar),
        Divider(
          color: BPColor.black,
        ),
        popUpViewRows(context, AppLocalizations.of(context).deleteText,
            Assets.iconDelete),
      ],
    ),
  );
}
 

В методе popUpViewRows у нас есть :

     GestureDetector popUpViewRows(BuildContext context, String text, String icon) {
  return GestureDetector(
    onTap: () {
      debugPrint('$text clicked');
    },
    child: Row(
      children: [
        Center(
          child: Text(
            text,
            style: BPFonts.popUpViewtextStyle,
          ),
        ),
        Spacer(),
        SvgPicture.asset(
          icon,
        ),
      ],
    ),
  );
}
 

Результат выглядит следующим образом:

введите описание изображения здесь

Как вы видите, вокруг всплывающего окна есть пустое пространство. Я не уверен, почему присутствует эта вещь, похожая на границу. И у шоумена, похоже, нет атрибута границы.

Ответ №1:

Хорошо. Я смог это понять. Все проще, чем я думал. Все, что мне нужно было сделать, это добавить атрибут цвета в шоумену, не могу поверить, что мне потребовалось так много времени, чтобы подумать об этом. Поэтому я сделал это :

 showMenu(
                color: BPColor.grey1,
                context: context,
                position: RelativeRect.fromLTRB(0, 0, 0.0, 0.0),
                items: <PopupMenuEntry>[
                  PopupMenuItem(
                    child: getPopUpView(context),
                  ),
                ],
              );
            },