2020. 9. 13. 23:48ㆍFlutter
flutter에서 이미지 파일 가져오는 방법을 알아봅시다!
하드코딩 해서 값을 픽셀 값으로 지정할 수 있지만 가로 모드로 변환하거나 디바이스의 사이즈마다 다를 땐 이미지로 인해 UI가 깨질 수도 잇습니다!
Expanded class
Expanded calss를 이용할 수 있습니다. ( 참고 : api.flutter.dev/flutter/widgets/Expanded-class.html )
즉, Row, Column 또는 Flex 위젯의 child 확장해서 child가 사용 가능한 공간을 채울 수 있도록 하는 위젯으로 확장 위젯을 이용하며 반응형처럼 만들 수 있습니다.
tip) 갑자기 생각 난 tip. window 경우, Ctrl + Shift를 누르면 전구 표시가 나오는 데, 클릭해서 레이아웃을 나눌 Row, Column, Container같은 위젯들로 자동으로 감싸줄 수 있다!
import 'package:flutter/material.dart';
void main() {
return runApp(
MaterialApp(
home: Scaffold(
backgroundColor: Colors.blueGrey,
appBar: AppBar(
title: Text('Dice게임'),
backgroundColor: Colors.blue,
),
body: DicePage(),
),
),
);
}
class DicePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Row(
children: <Widget>[
Expanded(
child: Image(
// Expanded 클래스 이용 없이 Image 위젯으로 200픽셀 하드 코딩한 부분은 주석처리
// width: 200,
image: AssetImage('images/dice1.png'),
),
),
],
);
}
}
2개 이상의 이미지를 정렬하는 방법은?
2개 이상의 이미지가 있을 경우에 이미지의 너비 차이를 주고 싶을 때, HTML5의 flex를 Expanded클래스에서도 사용할 수 있습니다. ( defaults : 1 )
children: <Widget>[
Expanded(
flex: 3,
child: Image(
image: AssetImage('images/dice1.png'),
),
),
Expanded(
flex: 2,
child: Image(
image: AssetImage('images/dice1.png'),
),
),
],
Image class의 유용한 생성자를 이용해 코드를 간결하게 한 수 있다.
child : Image.asset('images/dice1.png') 처럼 생성자를 이용해 코드를 간결하게 유지하자!
아래 코드를 보면 첫번 Expanded가 두 번째 보다 훨씬 간결함을 느낄 수 있습니다.
class DicePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Row(
children: <Widget>[
Expanded(
flex: 3,
child: Image.asset('images/dice1.png'),
),
Expanded(
flex: 2,
child: Image(
image: AssetImage('images/dice1.png'),
),
),
],
);
}
}
'Flutter' 카테고리의 다른 글
[Flutter] Routes 와 Navigation (feat. 멀티스크린) (0) | 2020.12.26 |
---|---|
[Flutter] Flutter에서 Dart 문법(2) - Functions as First Order Objects (2) | 2020.12.19 |
[Flutter] Flutter에서 Dart 문법 (enum 타입 , 삼항 연산자, Map 타입) (0) | 2020.12.13 |
[Flutter] 사용자 동작(제스터)를 감지하는 GestureDetector위젯 (0) | 2020.12.12 |
[Flutter] 디렉토리 구조의 pubspec.yaml 알아보기 (0) | 2020.08.09 |