【问题标题】:how to implement drop menu on raisedbutton如何在凸起按钮上实现下拉菜单
【发布时间】:2022-08-18 17:35:48
【问题描述】:

如果未按下下拉按钮:

按下放下按钮时:

您好,如何在这样的凸起按钮中实现下拉设计。谁能帮我?

    标签: flutter dart


    【解决方案1】:

    对于这种情况,您可以检查ExpansionTile。此外,您可以使用条件 if 来渲染 1 到 n 个带有一些动画的项目。

     bool isExpanded = false;
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          body: LayoutBuilder(
            builder: (context, constraints) => Padding(
              padding: const EdgeInsets.all(8.0),
              child: SingleChildScrollView(
                child: Column(
                  children: [
                    ListTileTheme(
                        dense: true,
                        contentPadding: EdgeInsets.all(0),
                        child: ExpansionTile(
                          childrenPadding: EdgeInsets.zero,
                          tilePadding: EdgeInsets.zero,
                          title: item(constraints),
                          children: [
                            for (int i = 0; i < 4; i++) item(constraints),
                          ],
                        )),
                    Divider(),
                    GestureDetector(
                        onTap: () {
                          setState(() {
                            isExpanded = !isExpanded;
                          });
                        },
                        child: item(constraints)),
                    if (isExpanded)
                      Column(
                        children: [
                          for (int i = 0; i < 4; i++) item(constraints),
                        ],
                      ),
                  ],
                ),
              ),
            ),
          ),
        );
      }
    
      SizedBox item(BoxConstraints constraints) {
        return SizedBox(
          width: constraints.maxWidth,
          child: Row(
            children: [
              Container(
                width: constraints.maxWidth - 64,
                height: 64,
                decoration: BoxDecoration(border: Border.all()),
                child: Row(
                  children: [
                    SizedBox(
                      width: 12,
                    ),
                    Icon(Icons.add),
                    SizedBox(
                      width: 24,
                    ),
                    Text("addd"),
                  ],
                ),
              ),
            ],
          ),
        );
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-02
      • 2020-08-04
      相关资源
      最近更新 更多