如何在行中制作灵活的多个小部件?

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

如何在行中制作灵活的多个小部件?我已经尝试过了,但是行不通

错误消息:A RenderFlex overflowed by 33 pixels on the right

Widget myWidget(){
   List<Widget> list = [];

      for (var i = 0; i < 15; i++) {
        list.add(
          Flexible(
            child: Material(
              child: InkWell(
                onTap: (){},
                child: Container(
                  child: Row(
                    children: <Widget>[
                      Radio(
                        materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,
                        value: i,
                        groupValue: group,
                        onChanged: (int){

                        },
                      )
                    ],
                  ),
                ),
              ),
            ),
          )
        );
      }

      return Row( children: list );
}

myWidget()

非常感谢您的帮助

flutter dart
2个回答
0
投票

尝试一下,

 Widget myWidget(){
        List<Widget> list = [];

        for (var i = 0; i < 15; i++) {
          list.add(
              InkWell(
                onTap: (){},
                child: Container(
                  child: Row(
                    mainAxisSize: MainAxisSize.min,
                    children: <Widget>[
                      Radio(
                        materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,
                        value: i,
                        groupValue: group,
                        onChanged: (int){

                        },
                      )
                    ],
                  ),
                ),
              )
          );
        }

        return SingleChildScrollView(scrollDirection: Axis.horizontal ,child: Row( children: list ));
      } 

0
投票

只需在列表中添加元素时删除父级的Flexible Widget,最后按如下所示将列表作为水平滚动视图的子级添加,

    Widget myWidget() {
    List<Widget> list = [];

    for (var i = 0; i < 15; i++) {
      list.add(Material(
        child: InkWell(
          onTap: () {},
          child: Container(
            child: Row(
              mainAxisSize: MainAxisSize.min,
              children: <Widget>[
                Radio(
                  materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,
                  value: i,
                  groupValue: "hello",
                  onChanged: (int) {},
                ),
              ],
            ),
          ),
        ),
      ));
    }

    return SingleChildScrollView(scrollDirection: Axis.horizontal, child: Row(children: list));
  }
© www.soinside.com 2019 - 2024. All rights reserved.