일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Automation Anywhere
- 개발공부
- npm
- 톰캣오류
- 툴공부
- 톰캣
- tomcat
- scss설치
- visual studio code
- VSCODE단축키
- Sass
- scss
- 크롤링
- sass설치
- vs code
- css
- Spring Boot Maven
- A360
- 공부
- Nodejs
- RPA
- 이클립스
- recorder capture
- vscode
- maven
- spring boot
- Today
- Total
Bomi is worldstar
[Flutter/개인] 02. 소스 공부 본문
내 맘대로 공부 1 (다트 프로그램 예)
// 1. 매개변수로 int형 aNumber를 받는 printInteger라는 함수를 정의하고
// 2. 받은 매개변수를 'The number is' 텍스트 뒤에 포함하여 콘솔에 출력하라.
printInteger(int aNumber){
print('The number is $aNumber.');
}
// 3. main함수를 정의하고
// 4. 그 안에 var형 number 변수에 42를 넣어 선언한 뒤
// 5. printInteger함수에 number 변수를 넣어 실행하라.
main() {
var number = 42;
printInteger(number);
}
▶ 결과 값
This number is 42.
내 맘대로 공부 2 (비동기 처리 예)
// 1. main함수를 정의한다.
// 1-1. checkVersion 함수를 불러온다.
// 1-2. 'end process'를 콘솔에 출력한다.
void main() {
checkVersion();
print('end process');
}
// 2. checkVersion 함수를 정의하는데 이 함수는 값을 1개 반환하는 비동기 함수이다.
// 2-1. var형 타입의 version변수를 선언한다.
// 2-2. version 변수에 lookUpVersion함수를 생성하는데 이 함수는 언제끝날지 모르는 작업이다.
// 2-3. version 변수를 콘솔에 출력한다.
Future checkVersion() async{
var version;
version = await lookUpVersion();
print(version);
}
// 3. int형 타입을 반환하는 lookUpVersion 함수를 정의한다.
// 3-1. 12값을 return한다.
int lookUpVersion(){
return 12;
}
▶ 결과 값
end process
12
내 맘대로 공부 3 (then() 함수 사용법)
// 1. main함수를 정의하는데 이 함수는 비동기이지만 return값은 없다.
// 1-1. getVerionName함수를 불러오는데 이 함수는 언제 끝날지 모르는 작업이며 then을 통해 value 라는 변수를 지정하여 return값을 받는다.
// 1-2. 그리고 위 함수 안에서 then으로 받은 value를 콘솔에 출력한다.
// 1-3. 'end process'를 콘솔에 출력한다.
void main() async {
await getVersionName().then((value) => {
print(value)
});
print('end process');
}
// 2. getVersionName 함수를 정의하는데 이 함수는 비동기 함수이며 return타입은 String이다.
// 2-1. var형 타입인 versionName변수를 선언한다.
// 2-2. versionName변수에 lookUpVersionName함수를 생성 이 함수는 언제 끝날지 모르는 작업이다.
// 2-3. versionName을 반환한다.
Future<String> getVersionName() async {
var versionName;
versionName = await lookUpVersionName();
return versionName;
}
// 3. return 타입이 String인 lookUpVersionName함수를 정의한다.
// 3-1. 'Android Q'라는 텍스트를 반환한다.
String lookUpVersionName() {
return 'Android Q';
}
▶ 결과 값
Android Q
end process
내 맘대로 공부 4 (await 키워드 활용 예)
// 1. main함수를 정의한다.
// 1-1. printOne() 함수를 호출한다.
// 1-2. printTwo() 함수를 호출한다.
// 1-3. printThree() 함수를 호출한다.
void main() {
printOne();
printTwo();
printThree();
}
// 2. 리턴값이 없는 printOne 함수를 정의한다.
// 2-1. 'One'을 콘솔에 출력한다.
void printOne() {
print('One');
}
// 3. 리턴값이 없는 printThree 함수를 정의한다.
// 3-1. 'Three'를 콘솔에 출력한다.
void printThree() {
print('Three');
}
// 4. 리턴값이 없는 printTwo 함수를 정의하는데 이 함수는 비동기 함수이다.
// 4-1. Future.delayed 함수를 이용하여 1초 기다린 후 'Future!!'를 콘솔에 출력한다.
// 4-2. 'Two'를 콘솔에 출력한다.
void printTwo() async {
Future.delayed(Duration(seconds: 1), () {
print('Future!!');
});
print('Two');
}
▶ 결과 값
One
Two
Three
Future!! //콘솔을 보면 1초 후에 출력 됨
만약 위 코드의 4번 코드를 아래와 같이 await를 넣어 변경한 경우 결과값 확인하기
// 4. 리턴값이 없는 printTwo 함수를 정의하는데 이 함수는 비동기 함수이다.
// 4-1. Future.delayed 함수를 이용하여 1초 기다린 후 'Future!!'를 콘솔에 출력하는데, 이 함수는 언제 끝날지 모르는 작업이다.
// 4-2. 'Two'를 콘솔에 출력한다.
void printTwo() async {
await Future.delayed(Duration(seconds: 1), () {
print('Future method!!');
});
print('Two');
}
▶ 결과 값
One
Three
Future method!! //1초 후에 출력된다.
Two
내 맘대로 공부 5 (JSON 데이터 디코딩 예)
// 1. convert라이브러리를 임포트 한다.
import 'dart:convert';
// 2. main함수를 정의한다.
// 2-1. var형 타입의 jsonString 변수를 선언한다.
// 2-2. jsonString 변수에 '''[{"score": 40}, {"score": 80}]''''; 텍스트를 저장한다.
// 2-3. var형 타입의 scores 변수를 선언한다.
// 2-4. scores 변수에 jsonString값을 decode한 값을 저장한다.
// 2-5. scores 변수가 List 인지 여부 값을 콘솔에 출력한다. (결과 : true / false)
// 2-6. var형 타입의 firstScore 변수를 선언한다.
// 2-7. firstScore변수에 scores의 첫번째 값을 저장한다.
// 2-8. fisrtScore 변수가 Map 인지 여부 값을 콘솔에 출력한다. (결과 : true / false)
// 2-9. firstScore의 키 값이 'score'가 40인지 여부 값을 콘솔에 출력한다. (결과 : true / false)
void main() {
var jsonString;
jsonString = '''
[
{"score": 40},
{"score": 80}
]
''';
var scores;
scores = jsonDecode(jsonString);
print(scores is List);
var firstScore;
firstScore = scores[0];
print(firstScore is Map);
print(firstScore['score'] == 40);
}
▶ 결과 값
true
true
true
내 맘대로 공부 6 (JSON 데이터 인코딩 예)
// 1. convert라이브러리를 임포트 한다.
import 'dart:convert';
// 2. main함수를 정의한다.
// 2-1. var형 타입의 scores 변수를 선언한다.
// 2-2. scores 변수에 [{'score': 40}, {'score': 80}, {'score': 100, 'overtime': true, 'special_guest': null}] 배열을 저장한다.
// 2-3. var형 타입의 jsonText 변수를 선언한다.
// 2-4. jsonText 변수에 scores변수를 encode한 값을 저장한다.
// 2-5. jsonText의 값이 '[{"score":40},{"score":80},{"score":100,"overtime":true,"special_guest":null}]'과 같은지 여부를 콘솔에 출력한다. (결과 값 : true / false)
void main() {
var scores;
scores = [
{'score': 40},
{'score': 80},
{'score': 100, 'overtime': true, 'special_guest': null}
];
var jsonText;
jsonText = jsonEncode(scores);
print(jsonText == '[{"score":40},{"score":80},{"score":100,"overtime":true,"special_guest":null}]');
}
▶ 결과 값
true
내 맘대로 공부 7 (스트림 통신 에)
// 1. async라이브러리를 임포트한다.
import 'dart:async';
// 2. sumStream 함수를 정의하는데 이 함수는 비동기 함수이고 return값이 int이다.
// 2-1. sumStream 함수에 매개변수 Stream<int> stream 를 추가한다.
// 2-2. var형 타입의 sum 변수를 선언한 뒤 0을 저장한다.
// 2-3. for in 함수를 정의하는데 이 함수는 언제 끝날지 모르는 작업이다.
// 2-4. for in 함수에 object 부분을 stream 변수로 지정하고 각 변수 값은 var value라는 명칭으로 지정한다.
// 2-5. for in 함수 안에서 'sumStream : ' 뒤에 value 값을 포함하여 콘솔에 출력한다.
// 2-6. for in 함수 안에서 sum에 value 값을 누적하여 저장한다.
// 2-7. sum을 리턴한다.
Future<int> sumStream(Stream<int> stream) async {
var sum = 0;
await for (var value in stream){
print('sumStream : $value');
sum += value;
}
return sum;
}
// 3. countStream 함수를 정의하는데 이 함수는 비동기 함수이고 return값이 int형으로 여러 개라 지속적으로 리턴값을 반환한다.
// 3-1. countStream 함수에 매개변수 int to를 추가한다.
// 3-2. for 함수를 정의한다.
// 3-3. for 함수에 int i = 1; i <= to; i++ 조건을 추가한다.
// 3-4. for 함수 안에서 'countStream : ' 뒤에 i값을 포함하여 콘솔에출력한다.
// 3-5. for 함수 안에서 i값을 지속적으로 반환한다.
Stream<int> countStream(int to) async* {
for (int i = 1; i <= to; i++){
print('countStream : $i');
yield i;
}
}
// 4. main함수를 정의하는데 이 함수는 비동기 함수이다.
// 4-1. var형 타입 stream 변수를 선언한다.
// 4-2. stream 변수에 countStream(10) 함수를 저장한다.
// 4-3. var형 타입 sum 변수를 선언한다.
// 4-4. sum 함수에 sumStream(stream) 함수를 저장하는데 이 함수는 언제 끝날지 모르는 작업이다.
// 4-5. sum값을 콘솔에 출력한다.
void main() async {
var stream;
stream = countStream(10);
var sum;
sum = await sumStream(stream);
print(sum);
}
▶ 결과 값
countStream : 1
sumStream : 1
countStream : 2
sumStream : 2
countStream : 3
sumStream : 3
countStream : 4
sumStream : 4
countStream : 5
sumStream : 5
countStream : 6
sumStream : 6
countStream : 7
sumStream : 7
countStream : 8
sumStream : 8
countStream : 9
sumStream : 9
countStream : 10
sumStream : 10
55
내 맘대로 공부 8 (then() 함수를 활용한 스트림 예)
// 1. main 함수를 정의한다.
// 1-1. var타입의 stream 변수를 선언한다.
// 1-2. stream 변수에 Stream.fromIterable([1, 2, 3, 4, 5]) 값을 저장한다.
// 1-3. stream변수의 가장 앞의 데이터를 then 함수를 이용하여 콘솔에 출력한다. (예상 결과 값 : 'first: value');
// 1-4. stream변수의 가장 마지막 데이터를 then 함수를 이용하여 콘솔에 출력한다. (예상 결과 값 : 'last: value');
// 1-5. stream변수가 비어있는지 확인하는 여부를 then 함수를 이용하여 콘솔에 출력한다. (예상 결과 값 : 'isEmpty: value');
// 1-6. stream변수의 전체 길이를 then 함수를 이용하여 콘솔에 출력한다. (예상 결과 값 : 'length: value');
void main() {
var stream;
stream = Stream.fromIterable([1, 2, 3, 4, 5]);
stream.first.then((value)) => print('first: $value'));
stream.last.then((value) => print('last: $value'));
stream.isEmpty.then((value) => print('isEmpty: $value'));
stream.length.then((value) => print('length: $value'));
}
Uncaught Error: Bad state: Stream has already been listened to.
first: 1
'■ App > Flutter' 카테고리의 다른 글
[Flutter] 03. 플러터 내부 구조 살펴보기 (0) | 2021.04.01 |
---|---|
[Flutter] 02. 다트를 알면 플러터가 보인다 (0) | 2021.03.24 |
[Flutter] 01. 플러터 시작하기 (0) | 2021.03.23 |