效果如上图;

布局分为左右两部分,左边的线和点 , 右边的物流文本信息; 左控件的高度根据右控件的高度而定,右边的高度不是固定的,是Text文本信息的高度;这个时候就要引出IntrinsicHeight 控件

IntrinsicHeight 控件介绍:

根据内部子控件高度来调整高度,它将其子widget的高度调整其本身实际的高度:

将其子控件调整为该子控件的固有高度,举个例子来说,Row中有3个子控件,其中只有一个有高度,默认情况下剩余2个控件将会充满父组件,而使用IntrinsicHeight控件,则3个子控件的高度一致。

此类非常有用,例如,当可以使用无限制的高度并且您希望孩子尝试以其他方式无限扩展以将其自身调整为更合理的高度时,该类非常有用。IntrinsicHeight | IntrinsicWidth | Flutter | 老孟

item大致代码:

 Widget orderItem(int index) {return Container(width: double.infinity,child: IntrinsicHeight( //重点是这个控件child: Row(children: [// 左边线和点Stack(children: [Container(margin: EdgeInsets.only(left: 7 , right: 23),width: 2,color: Color(0X552C28E8),),Container(width: 16,height: 16,decoration: BoxDecoration(color: Color(0XFF2C28E8),borderRadius: BorderRadius.all(Radius.circular(16))),),],),// 右边控件Expanded(child: Text("xxoo")),],),),);}

全部代码,选择性参考:

import 'package:flutter/material.dart';class CarOrderStatePage extends StatefulWidget {const CarOrderStatePage({Key? key}) : super(key: key);@override_CarOrderStatePageState createState() => _CarOrderStatePageState();
}class _CarOrderStatePageState extends State<CarOrderStatePage> {@overrideWidget build(BuildContext context) {return Scaffold(backgroundColor:Colors.black,body: Container(margin: ScreenUtils.edge(20, 66, 20, 66),decoration: BoxDecoration(color: Colors.white,borderRadius: BorderRadius.all(Radius.circular(5)),),child: Column(children: [topStateView(),SizedBox(height: ScreenUtils.getDip(6),),Padding(padding: ScreenUtils.getLeftRightMargin(),child: Text("尊敬的顾客,你的货物已到店,小哥将联系你前往门店提货,请按需携带取件码,感谢一路相伴!",style: TextStyle(fontFamily: "FZLTHJW",fontSize: ScreenUtils.getSp(12),height: 1.5,color: color_636E85),),),SizedBox(height: ScreenUtils.get20dp(),),Container(margin: ScreenUtils.getLeftRightMargin(),height: ScreenUtils.getDip(1),width: double.infinity,color: Color(0X55C5D2DE),),SizedBox(height: ScreenUtils.get20dp(),),Expanded(child: Padding(padding: ScreenUtils.getLeftRightMargin(),child: ListView.builder(padding: EdgeInsets.zero,shrinkWrap: true,itemBuilder: (c, index) {return orderItem(index);},itemCount: Colors.primaries.length,),),),SizedBox(height: ScreenUtils.get20dp(),),],),),);}Widget orderItem(int index) {return Container(width: double.infinity,child: IntrinsicHeight( //重点是这个控件child: Row(children: [Stack(children: [Container(margin: EdgeInsets.only(left: 7 , right: 23),width: 2,color: Color(0X552C28E8),),Container(width: 16,height: 16,decoration: BoxDecoration(color: Color(0XFF2C28E8),borderRadius: BorderRadius.all(Radius.circular(16))),),],),Expanded(child: Column(crossAxisAlignment: CrossAxisAlignment.start,mainAxisAlignment: MainAxisAlignment.start,children: [Row(children: [Text("当前物流状态",style: TextStyle(fontFamily: "FZLTHJW",fontSize: ScreenUtils.getSp(16),color: color_313D50),),Spacer(),Text("2021-12-21 14:21",style: TextStyle(fontFamily: "FZLTHJW",fontSize: ScreenUtils.getSp(10),color: color_9298A6),),],),SizedBox(height: 2,),index == 0 || index == 1 || index == 5 ? Text("待提货",style: TextStyle(fontFamily: "CadillacGothic",fontSize: ScreenUtils.getSp(12),height: 1.5,color: color_9298A6),):Container(),index == 1 ? Text("已到达取件点",style: TextStyle(fontFamily: "FZLTHJW",fontSize: ScreenUtils.getSp(12),height: 1.5,color: color_9298A6),) : Container(),SizedBox(height: ScreenUtils.getDip(32),)],)),],),),);}Widget topStateView() {return Row(children: [Expanded(child: Padding(padding: ScreenUtils.edge(20, 20, 20, 0),child: Text("已取件",style: TextStyle(fontFamily: "FZLTDHJW",fontSize: ScreenUtils.getSp(16),fontWeight: FontWeight.w500,color: color_313D50),),),),GestureDetector(onTap: () {},child: Padding(padding: ScreenUtils.edge(0, 12, 12, 0),child: ImageSize("icon_map_x",size: 16,),),)],);}
}

Flutter 物流状态、时间轴页面效果实现,IntrinsicHeight控件;相关推荐

  1. 关于从页面中获取用户控件中的其它控件(如DropDownList)事件的方法

    在项目中经常把一些经常使用的代码做成用户控件以提高代码的可重用性, 一个经常遇到的就是在页面中调用用户控件中的服务器控件的事件,下面给出简单的代码示列. 我们在一个用户控件(MaterialRepor ...

  2. aspx 页面,master页面与ascx用户控件传值的问题

    aspx 页面与ascx用户控件传值的问题 1.建立ascx控件 2.给ascx加上属性 3.将控件拖入aspx中 4.在aspx的代码中按控件ID访问属性 如: <uc3:left_Repas ...

  3. React Native 仿天猫物流跟踪时间轴

    最近心血来潮开始学习ReactNative,正好最近有一个项目可能会用到时间轴,页面原型类似于天猫的物流跟踪,如下图 分析之后决定使用ListView来实现,左边的时间轴则使用Art来绘制. 分析左边 ...

  4. 微信小程序物流快递状态时间轴

    wxml: <view class='g_con'><view class='topExpress'><image class="topExpress-left ...

  5. 如何实现集成GB28181监控平台LiveGBS的录像回放时间轴页面

    @ 目录 1.时间轴回放分享页面 1.1. iframe示例 1.2. 页面可配置参数 1.3.设备录像示例 1.4.云端录像示例 1.5.页面示例 2.搭建GB28181视频直播平台 1.时间轴回放 ...

  6. Android时间轴(Timeline)效果的实现

    1.时间轴效果 我们要实现的时间轴效果如下图所示,这是锤子手机的查看物流信息界面的截图. 2.主要布局的实现 在TraceActivity关联的布局文件activity_trace.xml中放置一个L ...

  7. LayaBox---多状态---时间轴动画

    目录 1.右键工程面板下的Scene---新建目录---命名为Animation 2.右键Animation文件夹--新建----动画--命名为xx 3.从预览面板里拖动动画图片到 层级面板----切 ...

  8. cesium 设置时间_Cesium应用篇:3控件(1)Clock

    创建 跟Clock相关的主要有Animation控件和Timeline控件,通常两者会放在一起使用. 在Cesium中,Viewer默认开启这两个控件,如果你想要不显示控件,可以在Viewer初始化中 ...

  9. Android自定义控件之3D上下翻页效果的倒计时控件

    这是一个自定义的倒计时控件,具有3D上下翻页翻转效果.最近项目中需要做一个倒计时控件,需要和iOS端的效果保持一样.大致效果是这样的,如下图所示: 由于暂时还不会怎么样制作gif动态图,所以想看具体效 ...

最新文章

  1. java 反射机制_Java反射机制原理探究
  2. 数据蒋堂 | 报表工具的SQL植入风险
  3. css多行超出显示点_CSS实现单行、多行文本溢出显示省略号(…)
  4. CentOS7 编译安装 Mariadb
  5. 保存对象报错with two open Sessions
  6. 文件的删除和文件信息的读取
  7. idea junit 测试看不到控制台报错信息_高手都这么给 Spring MVC 做单元测试!
  8. building tool
  9. Windows:打开MSDTC,恢复Windows任务栏,查看windows日志,打开远程桌面,打开Services,资源监控...
  10. 了解Docker、Ubuntu20.04安装docker教程
  11. 《JS高级程序设计》之三
  12. mysql 程序无法连接_程序无法连接到服务器不知道怎么解决
  13. HBase在新能源汽车监控系统中的应用
  14. 虚拟化工具介绍 (资源)
  15. iOS多线程——GCD底层探索中(dispatch_async与dispatch_sync源码)
  16. 云服务器更换系统后tomcat,云服务器CentOS7系统环境配置(jdk和tomcat)(示例代码)...
  17. JavaScript实现的躲避球小游戏
  18. 网络程序设计课程总结
  19. Lenovo 使用BoMC工具制作微码升级U盘刷新System x
  20. OpenCV基础应用20例

热门文章

  1. HTML5期末大作业:化妆品主题——绿色大气的html5响应式化妆品护肤品肌肤网页设计(11页) HTML+CSS+JavaScript 整体风格非常漂亮...
  2. 【高效编码】关于IDEA调试的点点滴滴都在此文了。领导看了都说好!!!!
  3. 【2023-Pytorch-检测教程】手把手教你使用YOLOV5做麦穗计数
  4. 计算机网络-常见知识
  5. Blender源码下载地址
  6. php婚纱网站设计论文,thinkPHP的婚纱购物商城网站的设计与实现
  7. 百度推广计划改为计算机端,百度推广;你真的了解闪投吗?
  8. sql语句基础练习2
  9. 【STM32WLE5之LoRa# 系列3、易智联LM401 评估板PingPong应用移植】
  10. 程序员的图画书:《HTMLCSS设计与构建网站》