首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >颤振PopupMenuButton缺失波纹效应

颤振PopupMenuButton缺失波纹效应
EN

Stack Overflow用户
提问于 2019-10-20 16:14:09
回答 1查看 648关注 0票数 1

以上图片中的按钮是我试图复制的。当它被点击时,它应该显示一个不同温度单位的列表。我从一个凸起的按钮开始,发现只显示弹出式列表并不容易。所以我换了个容器。它的工作方式,除了当点击按钮丢失时的涟漪效应。如果我删除BoxDecoration的颜色,它确实有效,但我确实希望按钮的颜色是白色的。有什么办法可以做到这一点吗?

代码语言:javascript
复制
                      Expanded(
                        flex: 2,
                        child: PopupMenuButton(
                          elevation: 3.0,
                          onSelected: (String value) {
                            setState(() {
                              _selection = value;
                            });
                          },
                          child: Container(
                            height: double.maxFinite,
                            width: double.maxFinite,
                            child: Center(
                              child: Text(
                                'C\n\nCelsius',
                                textAlign: TextAlign.center,
                              ),
                            ),
                            decoration: BoxDecoration(
                                color: Colors.white,
                                borderRadius: BorderRadius.circular(10),
                                border: Border.all(
                                    color: Colors.grey[kButtonBorderShade],
                                    width: 0.5)),
                          ),
                          itemBuilder: (BuildContext context) =>
                              <PopupMenuEntry<String>>[
                            const PopupMenuItem<String>(
                              value: 'Value1',
                              child: Text('Choose value 1'),
                            ),
                            const PopupMenuItem<String>(
                              value: 'Value2',
                              child: Text('Choose value 2'),
                            ),
                            const PopupMenuItem<String>(
                              value: 'Value3',
                              child: Text('Choose value 3'),
                            ),
                          ],
                        ),
                      ),

编辑:谢谢你以下的回答。我得到了我想要的工作方式,并给出了建议。这是我的最后一个按钮:

代码语言:javascript
复制
                      Expanded(
                        flex: 2,
                        child: ClipRRect(
                          borderRadius: BorderRadius.all(
                            Radius.circular(10),
                          ),
                          child: Material(
                            color: Colors.white,
                            child: PopupMenuButton(
                              onSelected: (String value) {
                                setState(() {
                                  _selection = value;
                                });
                              },
                              child: Container(
                                decoration: BoxDecoration(
                                    borderRadius: BorderRadius.circular(10),
                                    border: Border.all(
                                        color:
                                            Colors.grey[kButtonBorderShade],
                                        width: 0.5)),
                                child: Center(
                                  child: Text(
                                    'C\n\nCelsius',
                                    textAlign: TextAlign.center,
                                  ),
                                ),
                              ),
                              itemBuilder: (BuildContext context) =>
                                  <PopupMenuEntry<String>>[
                                const PopupMenuItem<String>(
                                  value: 'Value1',
                                  child: Text('Choose value 1'),
                                ),
                                const PopupMenuItem<String>(
                                  value: 'Value2',
                                  child: Text('Choose value 2'),
                                ),
                                const PopupMenuItem<String>(
                                  value: 'Value3',
                                  child: Text('Choose value 3'),
                                ),
                              ],
                            ),
                          ),
                        ),
                      ),
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-20 16:46:52

您可以使用Material包装PopupMenuButton,并将color属性放在Material小部件中而不是BoxDecoration中,如下所示:

代码语言:javascript
复制
Material(
    color: Colors.white,
    child: PopupMenuButton(...
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58474870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档