Flutter - 如何在 PopupMenu 容器和项目之间放置一些空间?

问题描述 投票:0回答:2

我希望弹出菜单项有一些空间用于容器和项目。每个项目都必须有边框。

如何在 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,
                                  )),
                            ),
                          ]),
                        ),
                        
flutter dart popupmenu
2个回答
0
投票

将弹出式菜单包装到 Padding 中


0
投票

我正在尝试解决您的问题:

这是代码示例

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

      ],
    );
  }
}

© www.soinside.com 2019 - 2024. All rights reserved.