IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Flutter 物流状态、时间轴页面效果实现,IntrinsicHeight控件; -> 正文阅读

[移动开发]Flutter 物流状态、时间轴页面效果实现,IntrinsicHeight控件;

效果如上图;

布局分为左右两部分,左边的线和点 , 右边的物流文本信息; 左控件的高度根据右控件的高度而定,右边的高度不是固定的,是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> {
  @override
  Widget 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,
            ),
          ),
        )
      ],
    );
  }
}

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-03-12 17:41:04  更:2022-03-12 17:41:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/1 10:35:32-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码