ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Dart 103
    카테고리 없음 2023. 4. 28. 16:48
    728x90

     

    비동기 프로그래밍

    void main() {
      addNumbers(1,1);
      addNumbers(2,2);
      
    }
    
    //1+1=2
    //2+2=4
    
    void addNumbers(int number1, int number2){
      print('계산중 : $number1 + $number2');  
      print('계산완료 : ${number1 + number2}');
    }
    

    Future

    delayed

    void main() {
      //Future - 미래
      //미래에 받아올 값
      Future<String> name = Future.value('두부');
      Future<int> number = Future.value(1);
      Future<bool> isTrue = Future.value(true);
      addNumbers(1,1);
      addNumbers(2,2);
    //   print('함수 시작');
    //   //2개의 파라미터
    //   // delayed - 지연되다.
    //   // 1번 파라미터 - 지연할 기간(얼마나 지연할건지) Duration
    //   // 2번 파라미터 - 지연 시간이 지난 후 실행할 함수
    //   Future.delayed(Duration(seconds:2), (){
    //     print('Delay 끝');
    //   });
    }
    void addNumbers(int number1, int number2){
      print('계산 시작 : $number1 + $number2');
      
      //서버 시뮬레이션
      
      Future.delayed(Duration(seconds:2),(){
        print('계산 완료 $number1 + $number2 = ${number1 + number2}');
      });
      print('함수 완료');
      
    }
    
    

    await

    void main() {
      //Future - 미래
      //미래에 받아올 값
      Future<String> name = Future.value('두부');
      Future<int> number = Future.value(1);
      Future<bool> isTrue = Future.value(true);
      addNumbers(1,1);
      addNumbers(2,2);
    
    //   print('함수 시작');
    //   //2개의 파라미터
    //   // delayed - 지연되다.
    //   // 1번 파라미터 - 지연할 기간(얼마나 지연할건지) Duration
    //   // 2번 파라미터 - 지연 시간이 지난 후 실행할 함수
    //   Future.delayed(Duration(seconds:2), (){
    //     print('Delay 끝');
    //   });
    }
    //async 넣어야만 await사용가능
    void addNumbers(int number1, int number2)async{
      print('계산 시작 : $number1 + $number2');
      
      //서버 시뮬레이션  
      await Future.delayed(Duration(seconds:2),(){
        print('계산 완료 $number1 + $number2 = ${number1 + number2}');
      });
      print('함수 완료 : $number1 + $number2');
      
    }
    
    //await를 사용한 순간 async를 기다리게 할 수 있다.그중에 cpu는 다른 작업을 한다.
    

    실제 값을 리턴

    void main() async {
      //Future - 미래
      //미래에 받아올 값
      Future<String> name = Future.value('두부');
      Future<int> number = Future.value(1);
      Future<bool> isTrue = Future.value(true);
    
      final result1 = await addNumbers(1, 1);
      final result2 = await addNumbers(2, 2);
    
      print('result1: $result1');
      print('result2: $result2');
      print('result1 + result2 = ${result1 + result2}');
    }
    //실제값
    Future<int> addNumbers(int number1, int number2) async {
      print('계산 시작 : $number1 + $number2');
    
      //서버 시뮬레이션
      await Future.delayed(Duration(seconds: 2), () {
        print('계산 완료 $number1 + $number2 = ${number1 + number2}');
      });
      print('함수 완료 : $number1 + $number2');
      
      return number1 + number2;
    }
    

    stream

    데이터가 계속 흐른다.

    stream을 닫을 때 까지 값을 무한하게 받을 수 있다.

    패키지 불러와야함

    import 'dart:async';
    
    void main() {
      final controller = StreamController();
      //계속해서 리스닝을 하고 싶으면 asBreadcasStream()을 달아준다.
      final stream = controller.stream.asBroadcastStream();
      
      final streamListener1 = stream.where((val)=>val%2==0).listen((val){
        print('Listener 1 : $val');
      });
      final streamListener2 = stream.where((val)=>val%2==1).listen((val){
        print('Listener 2 : $val');
      });
      
      controller.sink.add(1);
      controller.sink.add(2);
      controller.sink.add(3);
      controller.sink.add(4);
      controller.sink.add(5);
    }
    

    함수로 stream 받아오기

    다트 103

    비동기 프로그래밍

    void main() {
      addNumbers(1,1);
      addNumbers(2,2);
      
    }
    
    //1+1=2
    //2+2=4
    
    void addNumbers(int number1, int number2){
      print('계산중 : $number1 + $number2');  
      print('계산완료 : ${number1 + number2}');
    }
    

    Future

    delayed

    void main() {
      //Future - 미래
      //미래에 받아올 값
      Future<String> name = Future.value('두부');
      Future<int> number = Future.value(1);
      Future<bool> isTrue = Future.value(true);
      addNumbers(1,1);
      addNumbers(2,2);
    //   print('함수 시작');
    //   //2개의 파라미터
    //   // delayed - 지연되다.
    //   // 1번 파라미터 - 지연할 기간(얼마나 지연할건지) Duration
    //   // 2번 파라미터 - 지연 시간이 지난 후 실행할 함수
    //   Future.delayed(Duration(seconds:2), (){
    //     print('Delay 끝');
    //   });
    }
    void addNumbers(int number1, int number2){
      print('계산 시작 : $number1 + $number2');
      
      //서버 시뮬레이션
      
      Future.delayed(Duration(seconds:2),(){
        print('계산 완료 $number1 + $number2 = ${number1 + number2}');
      });
      print('함수 완료');
      
    }
    
    

    await

    void main() {
      //Future - 미래
      //미래에 받아올 값
      Future<String> name = Future.value('두부');
      Future<int> number = Future.value(1);
      Future<bool> isTrue = Future.value(true);
      addNumbers(1,1);
      addNumbers(2,2);
    
    //   print('함수 시작');
    //   //2개의 파라미터
    //   // delayed - 지연되다.
    //   // 1번 파라미터 - 지연할 기간(얼마나 지연할건지) Duration
    //   // 2번 파라미터 - 지연 시간이 지난 후 실행할 함수
    //   Future.delayed(Duration(seconds:2), (){
    //     print('Delay 끝');
    //   });
    }
    //async 넣어야만 await사용가능
    void addNumbers(int number1, int number2)async{
      print('계산 시작 : $number1 + $number2');
      
      //서버 시뮬레이션  
      await Future.delayed(Duration(seconds:2),(){
        print('계산 완료 $number1 + $number2 = ${number1 + number2}');
      });
      print('함수 완료 : $number1 + $number2');
      
    }
    
    //await를 사용한 순간 async를 기다리게 할 수 있다.그중에 cpu는 다른 작업을 한다.
    

    실제 값을 리턴

    void main() async {
      //Future - 미래
      //미래에 받아올 값
      Future<String> name = Future.value('두부');
      Future<int> number = Future.value(1);
      Future<bool> isTrue = Future.value(true);
    
      final result1 = await addNumbers(1, 1);
      final result2 = await addNumbers(2, 2);
    
      print('result1: $result1');
      print('result2: $result2');
      print('result1 + result2 = ${result1 + result2}');
    }
    //실제값
    Future<int> addNumbers(int number1, int number2) async {
      print('계산 시작 : $number1 + $number2');
    
      //서버 시뮬레이션
      await Future.delayed(Duration(seconds: 2), () {
        print('계산 완료 $number1 + $number2 = ${number1 + number2}');
      });
      print('함수 완료 : $number1 + $number2');
      
      return number1 + number2;
    }
    

    stream

    데이터가 계속 흐른다.

    stream을 닫을 때 까지 값을 무한하게 받을 수 있다.

    패키지 불러와야함

    import 'dart:async';
    
    void main() {
      final controller = StreamController();
      //계속해서 리스닝을 하고 싶으면 asBreadcasStream()을 달아준다.
      final stream = controller.stream.asBroadcastStream();
      
      final streamListener1 = stream.where((val)=>val%2==0).listen((val){
        print('Listener 1 : $val');
      });
      final streamListener2 = stream.where((val)=>val%2==1).listen((val){
        print('Listener 2 : $val');
      });
      
      controller.sink.add(1);
      controller.sink.add(2);
      controller.sink.add(3);
      controller.sink.add(4);
      controller.sink.add(5);
    }
    

    함수로 stream 받아오기

    다트 103

    비동기 프로그래밍

    void main() {
      addNumbers(1,1);
      addNumbers(2,2);
      
    }
    
    //1+1=2
    //2+2=4
    
    void addNumbers(int number1, int number2){
      print('계산중 : $number1 + $number2');  
      print('계산완료 : ${number1 + number2}');
    }
    

    Future

    delayed

    void main() {
      //Future - 미래
      //미래에 받아올 값
      Future<String> name = Future.value('두부');
      Future<int> number = Future.value(1);
      Future<bool> isTrue = Future.value(true);
      addNumbers(1,1);
      addNumbers(2,2);
    //   print('함수 시작');
    //   //2개의 파라미터
    //   // delayed - 지연되다.
    //   // 1번 파라미터 - 지연할 기간(얼마나 지연할건지) Duration
    //   // 2번 파라미터 - 지연 시간이 지난 후 실행할 함수
    //   Future.delayed(Duration(seconds:2), (){
    //     print('Delay 끝');
    //   });
    }
    void addNumbers(int number1, int number2){
      print('계산 시작 : $number1 + $number2');
      
      //서버 시뮬레이션
      
      Future.delayed(Duration(seconds:2),(){
        print('계산 완료 $number1 + $number2 = ${number1 + number2}');
      });
      print('함수 완료');
      
    }
    
    

    await

    void main() {
      //Future - 미래
      //미래에 받아올 값
      Future<String> name = Future.value('두부');
      Future<int> number = Future.value(1);
      Future<bool> isTrue = Future.value(true);
      addNumbers(1,1);
      addNumbers(2,2);
    
    //   print('함수 시작');
    //   //2개의 파라미터
    //   // delayed - 지연되다.
    //   // 1번 파라미터 - 지연할 기간(얼마나 지연할건지) Duration
    //   // 2번 파라미터 - 지연 시간이 지난 후 실행할 함수
    //   Future.delayed(Duration(seconds:2), (){
    //     print('Delay 끝');
    //   });
    }
    //async 넣어야만 await사용가능
    void addNumbers(int number1, int number2)async{
      print('계산 시작 : $number1 + $number2');
      
      //서버 시뮬레이션  
      await Future.delayed(Duration(seconds:2),(){
        print('계산 완료 $number1 + $number2 = ${number1 + number2}');
      });
      print('함수 완료 : $number1 + $number2');
      
    }
    
    //await를 사용한 순간 async를 기다리게 할 수 있다.그중에 cpu는 다른 작업을 한다.
    

    실제 값을 리턴

    void main() async {
      //Future - 미래
      //미래에 받아올 값
      Future<String> name = Future.value('두부');
      Future<int> number = Future.value(1);
      Future<bool> isTrue = Future.value(true);
    
      final result1 = await addNumbers(1, 1);
      final result2 = await addNumbers(2, 2);
    
      print('result1: $result1');
      print('result2: $result2');
      print('result1 + result2 = ${result1 + result2}');
    }
    //실제값
    Future<int> addNumbers(int number1, int number2) async {
      print('계산 시작 : $number1 + $number2');
    
      //서버 시뮬레이션
      await Future.delayed(Duration(seconds: 2), () {
        print('계산 완료 $number1 + $number2 = ${number1 + number2}');
      });
      print('함수 완료 : $number1 + $number2');
      
      return number1 + number2;
    }
    

    stream

    데이터가 계속 흐른다.

    stream을 닫을 때 까지 값을 무한하게 받을 수 있다.

    패키지 불러와야함

    import 'dart:async';
    
    void main() {
      final controller = StreamController();
      //계속해서 리스닝을 하고 싶으면 asBreadcasStream()을 달아준다.
      final stream = controller.stream.asBroadcastStream();
      
      final streamListener1 = stream.where((val)=>val%2==0).listen((val){
        print('Listener 1 : $val');
      });
      final streamListener2 = stream.where((val)=>val%2==1).listen((val){
        print('Listener 2 : $val');
      });
      
      controller.sink.add(1);
      controller.sink.add(2);
      controller.sink.add(3);
      controller.sink.add(4);
      controller.sink.add(5);
    }
    

    함수로 stream 받아오기

    다트 103

    비동기 프로그래밍

    void main() {
      addNumbers(1,1);
      addNumbers(2,2);
      
    }
    
    //1+1=2
    //2+2=4
    
    void addNumbers(int number1, int number2){
      print('계산중 : $number1 + $number2');  
      print('계산완료 : ${number1 + number2}');
    }
    

    Future

    delayed

    void main() {
      //Future - 미래
      //미래에 받아올 값
      Future<String> name = Future.value('두부');
      Future<int> number = Future.value(1);
      Future<bool> isTrue = Future.value(true);
      addNumbers(1,1);
      addNumbers(2,2);
    //   print('함수 시작');
    //   //2개의 파라미터
    //   // delayed - 지연되다.
    //   // 1번 파라미터 - 지연할 기간(얼마나 지연할건지) Duration
    //   // 2번 파라미터 - 지연 시간이 지난 후 실행할 함수
    //   Future.delayed(Duration(seconds:2), (){
    //     print('Delay 끝');
    //   });
    }
    void addNumbers(int number1, int number2){
      print('계산 시작 : $number1 + $number2');
      
      //서버 시뮬레이션
      
      Future.delayed(Duration(seconds:2),(){
        print('계산 완료 $number1 + $number2 = ${number1 + number2}');
      });
      print('함수 완료');
      
    }
    
    

    await

    void main() {
      //Future - 미래
      //미래에 받아올 값
      Future<String> name = Future.value('두부');
      Future<int> number = Future.value(1);
      Future<bool> isTrue = Future.value(true);
      addNumbers(1,1);
      addNumbers(2,2);
    
    //   print('함수 시작');
    //   //2개의 파라미터
    //   // delayed - 지연되다.
    //   // 1번 파라미터 - 지연할 기간(얼마나 지연할건지) Duration
    //   // 2번 파라미터 - 지연 시간이 지난 후 실행할 함수
    //   Future.delayed(Duration(seconds:2), (){
    //     print('Delay 끝');
    //   });
    }
    //async 넣어야만 await사용가능
    void addNumbers(int number1, int number2)async{
      print('계산 시작 : $number1 + $number2');
      
      //서버 시뮬레이션  
      await Future.delayed(Duration(seconds:2),(){
        print('계산 완료 $number1 + $number2 = ${number1 + number2}');
      });
      print('함수 완료 : $number1 + $number2');
      
    }
    
    //await를 사용한 순간 async를 기다리게 할 수 있다.그중에 cpu는 다른 작업을 한다.
    

    실제 값을 리턴

    void main() async {
      //Future - 미래
      //미래에 받아올 값
      Future<String> name = Future.value('두부');
      Future<int> number = Future.value(1);
      Future<bool> isTrue = Future.value(true);
    
      final result1 = await addNumbers(1, 1);
      final result2 = await addNumbers(2, 2);
    
      print('result1: $result1');
      print('result2: $result2');
      print('result1 + result2 = ${result1 + result2}');
    }
    //실제값
    Future<int> addNumbers(int number1, int number2) async {
      print('계산 시작 : $number1 + $number2');
    
      //서버 시뮬레이션
      await Future.delayed(Duration(seconds: 2), () {
        print('계산 완료 $number1 + $number2 = ${number1 + number2}');
      });
      print('함수 완료 : $number1 + $number2');
      
      return number1 + number2;
    }
    

    stream

    데이터가 계속 흐른다.

    stream을 닫을 때 까지 값을 무한하게 받을 수 있다.

    패키지 불러와야함

    import 'dart:async';
    
    void main() {
      final controller = StreamController();
      //계속해서 리스닝을 하고 싶으면 asBreadcasStream()을 달아준다.
      final stream = controller.stream.asBroadcastStream();
      
      final streamListener1 = stream.where((val)=>val%2==0).listen((val){
        print('Listener 1 : $val');
      });
      final streamListener2 = stream.where((val)=>val%2==1).listen((val){
        print('Listener 2 : $val');
      });
      
      controller.sink.add(1);
      controller.sink.add(2);
      controller.sink.add(3);
      controller.sink.add(4);
      controller.sink.add(5);
    }
    

    함수로 stream 받아오기

    728x90
designitlikesloth