화면에 이미지(사진, 아이콘 등)를 표시하는 위젯
다양한 소스 지원:
Image.network("https://picsum.photos/200")
👉 인터넷 이미지 표시
Image.network(
"https://picsum.photos/300",
width: 200,
height: 200,
fit: BoxFit.cover,
)
flutter:
assets:
- assets/images/
Image.asset("assets/images/sample.png")
| 속성 | 설명 |
|---|---|
| width / height | 크기 |
| fit | 이미지 채우기 방식 |
| alignment | 위치 정렬 |
| 값 | 설명 |
|---|---|
| cover | 꽉 채움 (비율 유지, 일부 잘림) |
| contain | 전체 보임 (여백 생김) |
| fill | 비율 무시, 꽉 채움 |
| fitWidth | 가로 기준 |
| fitHeight | 세로 기준 |


import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
Widget build(BuildContext context) {
return const MaterialApp(
home: ImageExample(),
);
}
}
class ImageExample extends StatelessWidget {
const ImageExample({super.key});
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text("Image Example")),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Image.network(
"https://picsum.photos/200",
width: 150,
height: 150,
fit: BoxFit.cover,
),
const SizedBox(height: 20),
Image.network(
"https://picsum.photos/300",
width: 150,
height: 100,
fit: BoxFit.contain,
),
],
),
),
);
}
}
Image.network(
"https://invalid-url.com/image.png",
loadingBuilder: (context, child, progress) {
if (progress == null) return child;
return const CircularProgressIndicator();
},
errorBuilder: (context, error, stackTrace) {
return const Icon(Icons.error);
},
)
| 기능 | 방법 |
|---|---|
| 네트워크 이미지 | Image.network |
| 로컬 이미지 | Image.asset |
| 크기 조절 | width / height |
| 채우기 | BoxFit |
👉 pubspec.yaml 누락 → 이미지 안 나옴
Image.network("...")
👉 예상 못한 크기 → UI 깨짐
👉 Image + BoxFit = 이미지 UI 핵심
fit 지정하는 습관