Flutter Wrap流式布局嵌套循环Row导致占据一行问题

在Flutter项目中,当使用Wrap流式布局循环数据时,遇到Row布局会占据整行从而影响Wrap效果。为了解决这个问题,可以改用RichText配合WidgetSpan来替代Row。通过创建一个RichText,将图标和文字分别用WidgetSpan包装,实现类似Row的功能,同时保持Wrap的布局效果。示例代码展示了具体实现方式。
摘要由CSDN通过智能技术生成

Flutter Wrap流式布局嵌套循环Row导致占据一行问题


项目中我们在使用Wrap去循环数据的时候,有一些UI需要使用到Row布局来进行展示,但是众所周知的是,Row布局会占满一行,这就导致我们的Wrap失效了,如何解决呢?
解决方案:

利用RichText来代替Row,其中RichText中可以使用WidgetSpan来存放我们的正常Widget组件,上代码:

Wrap(
     spacing:ScreenAdapter.setWidth(20),// 主轴(水平)方向间距
     runSpacing:ScreenAdapter.setHeight(13), // 纵轴(垂直)方向间距
     // alignment: WrapAlignment.start, //沿主轴方向居中
     direction:Axis.horizontal,
     children: tagList.map<Widget>((item){
       return InkWell(
         child: Container(
             padding: EdgeInsets.symmetric(horizontal:ScreenAdapter.setWidth(20), vertical:ScreenAdapter.setHeight(10)),
             decoration: BoxDecoration(
               color:Color(0xffEEEEEE),
               borderRadius: BorderRadius.circular(20)
             ),
             child:
             RichText(
               text: TextSpan(
                 style: TextStyle(fontSize: 25, color: Colors.black, fontWeight:FontWeight.w500),
                 children: [
                   WidgetSpan(
                     child: Container(
                       width: 30,
                       child: AspectRatio(
                         aspectRatio: 1/1,
                         child: ClipRRect(
                           borderRadius: BorderRadius.circular(20),
                           child: Container(
                             color:Colors.white,
                             child:Icon(Icons.add, size: 20, color:Color(0xffDB4739))
                           ),
                         ),
                       ),
                     ),
                   ),
                   TextSpan(text:'${item['title']}')
                 ]
               ),
             )
         ),
         onTap: (){
           Navigator.pushNamed(context, '/themeDetails', arguments: {'id':'3RDOl99mWb'});
         },
       );
     }).toList()
   )
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值