进度条LinearProgressIndicator

这篇博客展示了如何在Flutter中利用AnimationController创建一个带有固定颜色的线性进度条,并实现动画效果。通过监听AnimationController的值并更新状态,实现了进度条的动态变化,同时设置为反向重复播放,增加了交互体验。

LinearProgressIndicator

进度条有两类,一个是有具体值,另一个没有

 late AnimationController controller;

 @override
 void initState() {
   controller = AnimationController(
     vsync: this,
     duration: const Duration(seconds: 5),
   )..addListener(() {
       setState(() {});
     });
   controller.repeat(reverse: true);
   super.initState();
 }

@override
void dispose() {
  controller.dispose();
  super.dispose();
}

Widget build(BuildContext context) {
  return Scaffold(
    body: Padding(
      padding: const EdgeInsets.all(20.0),
      child: Column(
        mainAxisAlignment: MainAxisAlignment.spaceEvenly,
        children: [
          Text(
            'Linear progress indicator with a fixed color',
            style: const TextStyle(fontSize: 20),
          ),
          LinearProgressIndicator(
            value: controller.value,
            semanticsLabel: 'Linear progress indicator',
          ),
        ],
      ),
    ),
  );
}

 

在Jetpack Compose中,进度条组件是常用的UI组件,能在下载文件、上传文件、处理任务时使用,让用户知道系统还在运行,未死机。以下是Compose进度条组件的介绍及使用方法: ### 圆形进度条 Compose的material包提供了`CircularProgressIndicator`,用于实现View系统中的圆形进度条。其使用示例如下: ```kotlin CircularProgressIndicator() ``` ### 线性进度条 - **无限循环线性进度条**:使用`LinearProgressIndicator`可创建无限循环的线性进度条,示例如下: ```kotlin LinearProgressIndicator() ``` - **按进度变化的线性进度条**:通过设置`progress`参数可实现按进度变化的线性进度条,示例如下: ```kotlin var progress by remember { mutableStateOf(0.1f) } LinearProgressIndicator(progress = progress) ``` 完整示例代码如下,包含通过按钮增加进度的功能: ```kotlin Column( modifier = Modifier .fillMaxSize() .padding(20.dp) ) { // 进度条进度 var progressLinear = remember { mutableStateOf(0.1f) } // 线性进度条 -- 无限循环 LinearProgressIndicator() Spacer(modifier = Modifier.requiredHeight(10.dp)) // 线性进度条 -- 按进度变化 LinearProgressIndicator( progress = progressLinear.value, backgroundColor = Color.LightGray ) Spacer(modifier = Modifier.requiredHeight(10.dp)) TextButton( onClick = { if (progressLinear.value < 1.0f) { progressLinear.value = progressLinear.value + 0.1f } }, modifier = Modifier.background(Color.LightGray) ) { Text(text = "增加线性进度") } } ``` ### 自定义条形进度条 由于Compose没有现成的条形进度条,可采用Canvas自绘制的方式自定义条形进度条 [^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

computerclass

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值