
값이 여러개가 존재하는 프로그래스 바를 만들어야 했습니다.
다만 가장 작은 값이 가장 상단에 위치하여야 했고
패키지를 사용할 수 없는 상황이었기 때문에 아래와 같이 구현하였습니다.
Container(
height: 10,
width: double.infinity,
child: Stack(
children: [
// 기본 배경
Container(
decoration: BoxDecoration(
color: Colors.grey[200],
borderRadius: BorderRadius.circular(5),
),
),
..._buildSortedProgressIndicators(count), // 전체 값
],
),
),
List<Widget> _buildSortedProgressIndicators(int count) {
final progressItems = [
(10, Colors.blue),
(8, Colors.green),
(3, Colors.orange),
(5, Colors.red),
];
// value 값이 큰 순서대로 정렬 (큰 값이 아래에 위치하도록)
progressItems.sort((a, b) =>
(b.$1 / count).compareTo(a.$1 / count));
return progressItems.map((item) {
final value = math.min(1.0, item.$1 / count);
return ClipRRect(
borderRadius: BorderRadius.circular(5),
child: LinearProgressIndicator(
value: value,
backgroundColor: Colors.transparent,
valueColor: AlwaysStoppedAnimation<Color>(item.$2),
minHeight: 30,
),
);
}).toList();
}
디자인적 요소를 딱히 추가 하지 않았고
기본적인 디자인이기 때문에 수정하여 사용해야합니다.
여러 상태의 값이 동시에 진행되는 경우
해당 프로그래스바를 직접 구현하여 사용하는 것이 훨씬 편합니다.
패키지,, 쓰다가 반나절 날렸읍니다 ^^
'develop > Flutter' 카테고리의 다른 글
Flutter naver map 현재 위치 표시 및 방향 나타내기 (0) | 2025.04.08 |
---|---|
Dart에서 Currying 사용하기 - 커링 함수사용하여 코드 질 높이기 (0) | 2024.11.18 |
Dart의 고오급 함수를 적절히 사용하여 코드 퀄리티 높이기 (1) | 2024.11.17 |
Dart에서 `toList()`와 `toMap()` 사용법, 응용 하기 (0) | 2024.11.12 |
Dart에서 맵(map) 다루기 (0) | 2024.11.11 |