我希望弹出菜单项有一些空间用于容器和项目。每个项目都必须有边框。
如何在 PopupMenu 容器和项目之间放置一些空间?
如果我选择一个项目,它应该看起来像这样
如何实现?
项目代码:
Theme(
data: Theme.of(context).copyWith(
highlightColor: Colors.lightBlueAccent,
),
PopupMenuButton(
shape: const RoundedRectangleBorder(
borderRadius: BorderRadius.all(
Radius.circular(20.0),
),
),
icon: const Icon(
Icons.swap_vert,
size: 26,
color: Color(0xffffffff),
),
itemBuilder: (context) {
return [
PopupMenuItem(
value: 0,
padding: const EdgeInsets.only(left: 20),
child: Row(children: [
const Icon(
Icons.date_range,
color: Colors.black,
size: 26,
),
Padding(
padding: const EdgeInsets.only(left: 20),
child: Text("Date",
style: GoogleFonts.poppins(
color: const Color(0xff000000),
fontSize: 14,
fontWeight: FontWeight.w500,
letterSpacing: 0.4,
)),
),
]),
),
将弹出式菜单包装到 Padding 中
我正在尝试解决您的问题:
这是代码示例
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
class PopupMenuExample extends StatefulWidget {
const PopupMenuExample({Key? key}) : super(key: key);
@override
State<PopupMenuExample> createState() => _PopupMenuExampleState();
}
class _PopupMenuExampleState extends State<PopupMenuExample> {
String selectedOption = 'Option 1';
String _selectedItem = "Item 1";
@override
Widget build(BuildContext context) {
return AppBar(
title: const Text(
'Popup Menus',
style: TextStyle(color: Colors.white, fontSize: 16.0),
),
actions: [
PopupMenuButton<String>(
onSelected: (value) {
setState(() {
_selectedItem = value;
});
},
itemBuilder: (BuildContext context) {
return <PopupMenuEntry<String>>[
PopupMenuItem<String>(
value: "Item 1",
child: Container(
color: _selectedItem == "Item 1" ? Colors.blue : null,
child: Text("Item 1"),
),
),
PopupMenuItem<String>(
value: "Item 2",
child: Container(
color: _selectedItem == "Item 2" ? Colors.blue : null,
child: Text("Item 2"),
),
),
];
},
)
],
);
}
}