- 다트 라이브러리의 주요 기능의 사용 방법 및 예시를 볼 예정 입니다.
- TL;DR : 최대한 내용을 요약하여 표현했습니다.
- 좀 더 자세하고 상세한 내용을 보고 싶으시면 위 원문 링크를 참조 바랍니다.
플러터란 ? 구글에서 개발한 크로스 플랫폼 앱 개발 프레임워크며, 언어는 구글이 개발한 Dart 를 사용합니다. 안드로이드, iOS, Web, Desktop 을 지원하며 구글의 차기 OS Fuchsia의 메인개발환경이 된다고 하네요 :)
이전 글
- [FLUTTER] 다트 주요 라이브러리 둘러보기 - 5 / A Tour of the Dart Libraries
- [FLUTTER] 다트 주요 라이브러리 둘러보기 - 4 / A Tour of the Dart Libraries
- [FLUTTER] 다트 주요 라이브러리 둘러보기 - 3 / A Tour of the Dart Libraries
- [FLUTTER] 다트 주요 라이브러리 둘러보기 - 2 / A Tour of the Dart Libraries
- [FLUTTER] 다트 주요 라이브러리 둘러보기 - 1 / A Tour of the Dart Libraries
10. dart:math
다트 : 수학 라이브러리 (API 참조)는 사인 및 코사인, 최대 및 최소 등의 일반적인 기능과 pi(파이) 및 e와 같은 상수를 제공합니다. 수학 라이브러리의 대부분의 기능은 최상위 함수(top level function)로 구현됩니다.
10.1. Trigonometry(삼각법)
Math 라이브러리는 기본적인 삼각 함수를 제공합니다
- [참조] 1 라디안(radian) 은 원둘레 위에서 반지름의 길이와 같은 길이를 갖는 호에 대응하는 중심각의 크기로 무차원의 단위이다. 호도(弧度)라고도 하며 rad로 줄여 쓰기도 한다. 보다 일반적으로 라디안 값은 원에서의 호와 반지름의 길이의 비율과 같다.
// Cosine (코싸인)
assert(cos(pi) == -1.0);
// Sine (싸인)
var degrees = 30;
var radians = degrees * (pi / 180);
var sinOf30degrees = sin(radians);
assert((sinOf30degrees - 0.5).abs() < 0.01);
10.2. Maximum and minimum (최대최소)
- 예시
assert(max(1, 1000) == 1000);
assert(min(1, -1000) == -1000);
10.3. Math constants (Math 관련 상수)
// 부가적인 상수들은 Math 라이브러리를 참조 바랍니다
print(e); // 2.718281828459045
print(pi); // 3.141592653589793
print(sqrt2); // 1.4142135623730951
10.4. Random numbers (랜덤수)
Random 클래스로 난수를 생성합니다. 또한 Random 생성자에 시드를 제공 할 수 있습니다.
var random = Random();
random.nextDouble(); // 0.0 ~ 1.0 사이의 숫자 반환
random.nextInt(10); // 0 ~ 10 사이 숫자 반환
random.nextBool(); // 참(true) 또는 거짓(false) 반환
11. dart:convert - 인코딩, 디코딩, JSON, UTF-8 등
11.1. JSON 인코딩/디코딩
convert 라이브러리는 JSON 및 UTF-8 용 변환기가 있으며 추가 변환기를 만들 수 있습니다.
int, double, String, bool, null, List 또는 Map (문자열 키 포함)의 객체 만 JSON으로 직접 인코딩 할 수 있습니다. List 및 Map 객체는 재귀 적으로 인코딩됩니다.
- jsonDecode ::: json 문자열을 json 개체로 변환
// 주의 : JSON 문자열 내부에서는 쌍따옴표(")를 사용하기 바랍니다. 홑따옴표(')
var jsonString = '''
[
{"score": 40},
{"score": 80}
]
''';
var scores = jsonDecode(jsonString);
assert(scores is List);
var firstScore = scores[0];
assert(firstScore is Map);
assert(firstScore['score'] == 40);
- jsonEncode ::: json 개체를 json 문자열로 변환
var scores = [
{'score': 40},
{'score': 80},
{'score': 100, 'overtime': true, 'special_guest': null}
];
var jsonText = jsonEncode(scores);
assert(jsonText ==
'[{"score":40},{"score":80},'
'{"score":100,"overtime":true,'
'"special_guest":null}]');
11.2. UTF-8 문자열 인코딩 디코딩
- decode 예제
List<int> utf8Bytes = [
0xc3, 0x8e, 0xc3, 0xb1, 0xc5, 0xa3, 0xc3, 0xa9,
0x72, 0xc3, 0xb1, 0xc3, 0xa5, 0xc5, 0xa3, 0xc3,
0xae, 0xc3, 0xb6, 0xc3, 0xb1, 0xc3, 0xa5, 0xc4,
0xbc, 0xc3, 0xae, 0xc5, 0xbe, 0xc3, 0xa5, 0xc5,
0xa3, 0xc3, 0xae, 0xe1, 0xbb, 0x9d, 0xc3, 0xb1
];
var funnyWord = utf8.decode(utf8Bytes);
assert(funnyWord == 'Îñţérñåţîöñåļîžåţîờñ');
- encode 예제
List<int> encoded = utf8.encode('Îñţérñåţîöñåļîžåţîờñ');
assert(encoded.length == utf8Bytes.length);
for (int i = 0; i < encoded.length; i++) {
assert(encoded[i] == utf8Bytes[i]);
}
- UTF-8 문자의 스트림 또한 transform 을 통해 utf8.decoder 를 지정하여 활용 할 수 있습니다.
var lines = inputStream
.transform(utf8.decoder)
.transform(LineSplitter());
try {
await for (var line in lines) {
print('Got ${line.length} characters from stream');
}
print('file is now closed');
} catch (e) {
print(e);
}
11.3. 다른 기능
convert 라이브러리에는 ASCII 및 ISO-8859-1 (Latin1) 용 변환기도 있습니다.
맺음말
이번 시간에는 math 와 convert 에 대해 알아 봤습니다. 지난 1달간 연재 대회를 통해
DART 언어 기초과정(4회)
및다트 주요 라이브러리 둘러보기(6회)
에 나눠 알아 봤습니다. 저도 첨 접하는 프로그램언어여서 아직도 많은 어색함이 있습니다. 하지만 이렇게 글로 기록하며 하나씩 예제를 따라 직접 실행도 하니, 이전과 달리 발전한 모습을 볼 수 있었던 시간이 아니였나 생각되네요 :) 앞으로도 연재대회와 별개로 flutter 및 기타 프로그래밍 언어에 대한 글을 지속적으로 기고할 예정 입니다. 많은 관심 부탁드려요 ~
- 이전 시간에 배운 A Tour of the Dart Language 1 2 3 4 는 여유 되시면 반복 학습 부탁 드립니다. 위 내용이 학습된 상태에서 본 내용을 습득해야 이해가 빠른편인지라 ... :)
읽기 힘든 글 읽어주셔서 (또는 눈팅 이라도) 감사합니다
관련 글 링크
@flutters : 제가 작성한 글 중 fluter 관련 글만 모아서 리스팀 처리
관련글(영문)
연재글
- [FLUTTER] 다트 주요 라이브러리 둘러보기 - 5 / A Tour of the Dart Libraries
- [FLUTTER] 다트 주요 라이브러리 둘러보기 - 4 / A Tour of the Dart Libraries
- [FLUTTER] 다트 주요 라이브러리 둘러보기 - 3 / A Tour of the Dart Libraries
- [FLUTTER] 다트 주요 라이브러리 둘러보기 - 2 / A Tour of the Dart Libraries
- [FLUTTER] 다트 주요 라이브러리 둘러보기 - 1 / A Tour of the Dart Libraries
- [FLUTTER] DART 언어 기초과정 - 4 / A Tour of the Dart Language
- [FLUTTER] DART 언어 기초과정 - 3 / A Tour of the Dart Language
- [FLUTTER] DART 언어 기초과정 - 2 / A Tour of the Dart Language
- [FLUTTER] DART 언어 기초과정 - 1 / A Tour of the Dart Language
좋긴 한데 또 배워야 한다는 사실이 ㅇ_ㅇ 무섭군요. ㅋㅋㅋㅋㅋㅋ 아직 제대로 아는 것도 하나 못 만들었는데 ㅎㅎㅎㅎㅎㅎㅎㅎㅎ 하나라도 제대로 하고 싶습니다. ㅎㅎㅎ
그냥 느낌가는대로 해서 천천히 시작함 되죠 뭐 :)
예, ㅎㅎ 필 충만하게 달려보겠습니다. ㅎㅎ
천하제일~♩♬
행복한 ♥ 목욜 보내셔용~^^
Posted using Partiko Android