728x90
반응형
## Future
void main() async {
//Future
//미래에 받아올 값
Future<String> name = Future.value('hello');
Future<int> number = Future.value(1);
Future<bool> isTrue = Future.value(true);
final result1 = await addNumbers(1,1);
final result2 = await addNumbers(2,2);
}
Future<int> addNumbers(int number1 , int number2) async {
print('계산 시작 : $number1 + $number2');
await Future.delayed(Duration(seconds: 2),(){
print('완료 : $number1 + $number2 = ${number1+number2}');
});
print('함수 완료');
return number1+number2;
}
# Future.delayed() -> 첫번째 파라미터는 지연시간을 정하고 두번째 파라미터에서는 지연시간 이후 실행할 함수를 지정한다.
# await -> 값을 기다렸다가 받는다는 의미
## stream
import 'dart:async';
void main(){
final controller = StreamController();
final stream = controller.stream;
final streamListerner1 = stream.listen((val){
print('Listener 1 : $val');
});
controller.sink.add(1);
}
# stream을 사용하기 위해서는 async 패키지가 필요하다 위 예제에서는 DartPad web을 이용 하였다.
# stream.listen에 매개변수가 입력되었을때 해당 함수가 실행된다.
## 다중 stream 및 조건 추가
import 'dart:async';
void main(){
final controller = StreamController();
final stream = controller.stream.asBroadcastStream();
final streamListerner1 = stream.where((val) => val % 2 == 0).listen((val){
print('Listener 1 : $val');
});
final streamListerner2 = stream.where((val) => val % 2 != 0).listen((val){
print('Listener 2 : $val');
});
controller.sink.add(1);
controller.sink.add(2);
controller.sink.add(3);
controller.sink.add(4);
}
# 다중 stream을 사용하기 위해서는 final stream = controller.stream.asBroadcastStream(); -> asBroadcastStream() 을 추가 해주면 된다.
# 각 stream의 where함수를 사용하여 조건을 추가할 수 있다.
## stream 함수화
import 'dart:async';
void main(){
calculate(2).listen((val){
print('calculate(2) == $val');
});
calculate(4).listen((val){
print('calculate(4) == $val');
});
}
Stream<int> calculate(int number) async*{
for(int i=0; i < 5; i++){
yield i*number;
await Future.delayed(Duration(seconds: 1));
}
}
728x90
반응형
'개발일기 > Dart' 카테고리의 다른 글
Dart #5 Functional Programming (1) | 2024.02.08 |
---|---|
Dart #4 OOP (0) | 2024.02.02 |
Dart #3 typedef (0) | 2024.02.02 |
Dart #2 DATA TYPES (0) | 2023.11.29 |
Dart #1 VARIABLES (0) | 2023.11.29 |