#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),
),
],
);
},