Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
Tags
- 자바스크립트
- ListView
- develop
- UI/UX
- 엡
- JS
- react
- JQ
- java 출력
- 앱심사
- java
- println
- 배포
- riverpod
- 자바 출력 방식
- java 콘솔 출력 차이
- Clean Architecture
- DART
- scss
- 단축키
- unity
- lifecycle
- firebase
- abap
- nodejs
- Flutter
- 자바 포맷 출력
- npm
- printf
- LLM
Archives
- Today
- Total
guricode
트러블슈팅: CircleAvatar로 프로필 이미지 UI 구현 시 크기 제약 문제 본문
문제 상황
WelcomePage 화면에서 사용자 프로필 이미지 업로드 UI를 구현하려 했음.
CircleAvatar 위젯을 사용해 원형 이미지와 회색 배경을 적용하고, 향후 이미지 업로드 기능까지 확장하려 했음.
그러나 아래와 같은 제약이 발생함:
- CircleAvatar는 radius만 지원하고 width / height를 따로 지정할 수 없음
- 정사각형 이상 비율의 유연한 레이아웃에서 이미지가 제대로 배치되지 않음
- 위젯 크기 확장이 직관적이지 않아, 다양한 해상도/화면에서 UI 깨짐 현상 발생 가능
고민한 방법
- CircleAvatar의 radius 값을 조절해보며 대응 시도
- SizedBox, FittedBox 등 래핑하여 대응 시도
- 원형 배경 유지하면서도 직관적으로 크기 제어 가능한 위젯 탐색
선택한 해결 방법
Container 위젯으로 전환하고, BoxDecoration을 통해 원형 스타일을 수동 적용함.
이를 통해 아래와 같은 효과를 동시에 만족시킬 수 있었음:
- width / height 명시 가능 → 원하는 크기 자유롭게 설정
- decoration으로 원형 배경, 색상, 테두리 등 세부 스타일링 가능
- 이후 프로필 이미지 업로드 기능 확장 시 DecorationImage 활용 가능
적용 코드 예시:
Container(
width: 80,
height: 80,
decoration: BoxDecoration(
shape: BoxShape.circle,
color: Colors.grey[300],
),
child: Icon(Icons.person, size: 40),
)
향후 고려 사항
- 이미지 업로드 후에는 Container의 decoration.image에 NetworkImage 혹은 FileImage 적용 예정
- 추후 사용자의 프로필 이미지 존재 여부에 따라 기본 아이콘/이미지 전환 로직 추가 예정
- 다른 페이지(예: 채팅 목록, 채팅방 등)에서도 동일 방식 재활용 가능
결론
- CircleAvatar는 간단한 프로필 아이콘에 유용하지만, 크기나 스타일링에 제약이 있음
- 보다 유연하고 세밀한 UI 조절이 필요할 경우, Container + BoxDecoration(shape: BoxShape.circle) 조합이 효과적임
'앱 > Flutter&Dart' 카테고리의 다른 글
| Flutter iOS 시뮬레이터에서 위치 테스트하는 방법 (3) | 2025.08.11 |
|---|---|
| Flutter SDK 버전 오류 트러블슈팅: Dart SDK 버전 불일치 (1) | 2025.08.08 |
| Kotlin 컴파일 오류: metadata version mismatch 트러블슈팅 (3) | 2025.08.07 |
| Riverpod 상태 변경 에러 트러블슈팅: Tried to modify a provider while the widget tree was building (1) | 2025.08.05 |
| BottomNavigationBar_Widget (1) | 2025.08.04 |