본 내용은 위 책을 많이 참고했다.
이미지 파일은 다음과 같이 등록할 수 있다.
필요한 이미지를 경로에 넣는다.
- pubspec.yaml 파일을 다음과 같이 수정한다. ```yaml flutter: uses-material-design: true
import image files.
assets : - images/name.png
assets:
- images/ ``` images/는 해당 폴더 내의 전체 요소를 불러오겠다는 뜻이다.(하위 디렉토리 로드 불가능. 하위 디렉토리는 별도로 지정해줘야 함.)
- 이미지 위젯을 사용한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( appBar: AppBar( title: Text("images Loading"), ), body: Row(textDirection: TextDirection.ltr, children: [ Image.asset('images/1.png'), Image.asset('images/2.png'), Image.asset('images/3.png'), ])), ); } }
Row의 경우 textDirection까지 등록해줘야 한다. Column의 경우 그냥 한다.
화면 크기에 맞지 않을 경우 이미지가 잘리는 것을 볼 수 있다.
이미지 크기에 따라 다른 에셋을 적용할 수도 있다. 파일 이름은 같지만 하위 디렉토리가 다를 경우 플루터가 알아서 이해하여 이미지를 구분해준다. 즉, images/image.png와 images/second/image.png를 플루터에서 구분해서 처리해준다는 뜻이다. 다만 이미지 크기로 구분할 경우 2.0x, 3.0x 같이 폴더 이름을 지어야 한다.
안드로이드: hdpi, xhdpi, xxhdpi, xxxhdpi …
아이폰: 1x, 2x, 3x …
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text("images Loading"),
),
body: Row(textDirection: TextDirection.ltr, children: [
Image(image: AssetImage('images/1.png')),
Image(image: AssetImage('images/2.png')),
Image(image: AssetImage('images/3.png')),
])),
);
}
}
이미지는 위와 같이도 올릴 수 있다.
이미지의 크기는 다음과 같이 조절한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text("images Loading"),
),
body: Row(textDirection: TextDirection.ltr, children: [
Image(image: ResizeImage(AssetImage('images/1.png'), width: 250, height: 250)),
Image(image: ResizeImage(AssetImage('images/2.png'), width: 250, height: 250)),
Image(image: ResizeImage(AssetImage('images/3.png'), width: 250, height: 250)),
]
)
),
);
}
}