You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Flutter中为Container外侧实现环形进度条?

实现带环形边框进度条的Container组件

核心思路

通过容器的padding预留环形进度条的宽度,外层容器利用CSS的conic-gradient实现环形进度的渐变效果;内层容器覆盖中间区域,用于展示进度百分比,同时通过border-radius: 50%保持整体圆形外观。


React组件示例

import React from 'react';
import './CircularProgressContainer.css';

const CircularProgressContainer = ({ progress = 0 }) => {
  // 限制进度在0-100的合理范围
  const clampedProgress = Math.max(0, Math.min(100, progress));
  const percentage = `${clampedProgress}%`;

  return (
    <div 
      className="circular-progress-container"
      style={{ background: `conic-gradient(#4CAF50 ${percentage}, #e0e0e0 ${percentage})` }}
    >
      <div className="progress-content">
        {clampedProgress}%
      </div>
    </div>
  );
};

export default CircularProgressContainer;

对应CSS样式(CircularProgressContainer.css)

.circular-progress-container {
  width: 200px;
  height: 200px;
  border-radius: 50%;
  padding: 8px; /* 控制环形进度条的粗细 */
  display: flex;
  align-items: center;
  justify-content: center;
}

.progress-content {
  width: 100%;
  height: 100%;
  border-radius: 50%;
  background-color: #ffffff; /* 中间区域背景色,与页面背景保持一致即可 */
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 28px;
  font-weight: 700;
  color: #333333;
}

使用方式

// 在其他组件中引入使用
<CircularProgressContainer progress={75} />

自定义调整项

  • 修改.circular-progress-container的width和height可以调整组件整体大小
  • 调整padding值可改变环形进度条的宽度
  • 替换conic-gradient中的#4CAF50(完成色)和#e0e0e0(未完成色)可自定义进度条配色
  • 修改.progress-content的字体、颜色属性可调整中间百分比文本样式

内容的提问来源于stack exchange,提问作者Ravi Taak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 09:30:04