flutter 表格布局根据文字动态高度

![image.png](https://upload-images.jianshu.io/upload_images/1306100-9658ac0c1d121256.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

 Widget listview() {
    return Container(
      // padding: EdgeInsets.all(12),
      decoration: BoxDecoration(
        border: Border.all(width: 1,color: Color(0xffE5E6EB))
      ),
      child: Column(
        children: [
          _tabHeader(),
          ListView.separated(
            shrinkWrap: true,
            padding: EdgeInsets.zero,
            physics: const NeverScrollableScrollPhysics(),
            itemBuilder: itemBuilder,
            separatorBuilder: separatorBuilder,
            itemCount: 8,
          )
        ],
      ),
    );
  }

  Widget _tabHeader(){
    return Container(
      height: 30,
      child: IntrinsicHeight(
        child: Row(
          children: [
            _titleItems(title: "title[0]",flex: 1),
            _line(),
            _titleItems(title: "title[1]",flex: 1),
          ],
        ),
      ),
    );
  }

  _titleItems({required String title, required int flex}) {
    return Expanded(
        flex: flex,
        child: Container(
          height: 32,
          alignment: Alignment.center,
          decoration: const BoxDecoration(color: SCColors.color_EDEDF0),
          child: Text(
            title,
            style: const TextStyle(color: SCColors.color_5E5E66, fontSize: 12,fontWeight: FontWeight.w500),
          ),
        ));
  }

  Widget _line(){
    return const VerticalDivider(
        width: 1,
        thickness: 1,
        indent: 0,
        endIndent: 0,
        color: Color(0xffE5E6EB)
    );
  }

  Widget itemBuilder(BuildContext context, int index){

    return Container(
      // height: 34,
      decoration: BoxDecoration(
          color: index %2==0 ? const Color(0xffffffff) : const Color(0xffF7F8FA)
      ),
      child: IntrinsicHeight(
        child: Row(
          children: [
            _cellItem(title: "text2text2text2text2text2text2text2text2text2text2text2text2text2text2text2text2text2text2text2text2text2",flex: 1),
            _line(),
            _cellItem(title: "text2text2text2text2text2text2text2",flex: 1),
          ],
        ),
      ),
    );
  }

  _cellItem({required String title ,required int flex}){
    return Expanded(
        flex:flex,
        child: Padding(
          padding: const EdgeInsets.only(top: 6,bottom: 6,left: 6,right: 6),
          child: Text(
            title,
            textAlign: TextAlign.center,
            style: TextStyle(fontSize: 12, color: title == '是'?Colors.red:  Color(0xff5E5F66,),),
          ),
        )
    );
  }

  Widget separatorBuilder (BuildContext context ,int index){
    return const Padding(padding: EdgeInsets.only(left: 0,right: 0),child: Divider(height: 1,),);
  }
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容