개발일지/Dart28 JSON데이터 파싱하기 json데이터를 가져와 원하는 데이터를 얻을려면 가공을 해주어야한다 그럴려면 먼저 데이터 타입이 무엇인지가 중요하다 1.json형태의 주소와 먼저 연결을 시켜준다. 연결에 성공을 햇으면 statusCode에서 200코드를 던저준다. 200코드이면 연결이 잘 되었다는 것이다. 응답한 response의 데이터 타입은 Response이다. 이 Response를 Map구조로 변환 시켜주어야한다. Map구조로 바꿔 주기위해서는 convert를사용해주어야 한다. 먼저 사용하기 위해서는 import를 해주고나서 뒤에 as를 써주고 난뒤 convert라고 이름으 지어준다. 변수명 같은거라고 생각하자 사용하는 이유는 비슷한 이름을 가지는 패키지가 있으면 저 패키지를 우선권을 주는 것이다. 그리고나서 응답받은 데이터의 b.. 개발일지/Dart 2022. 11. 15. Dart Http통신 연결 https://pub.dev/packages/http/install http | Dart Package A composable, multi-platform, Future-based API for HTTP requests. pub.dev flutter의 경우 pub.dev에 가면 사용할 수 있는 라이브러리가 모여있다! pubspec.yaml파일 안에 추가!!! import 'package:flutter/material.dart'; import 'package:http/http.dart' as mHttp; void main() { runApp(MaterialApp( home: Home(), )); } class Home extends StatefulWidget { const Home({Key? key}) :.. 개발일지/Dart 2022. 11. 15. Stream Stream이란 스트림은 데이터나 이벤트가 들어오는 통로이다. 앱을 만들다 보면 데이터를 처리할 일이 많은데, 어느 타이밍에 데이터가 들어올지 확실히 알기 어렵습니다. 스트림은 이와 같은 비동기 작업을 할 때 주로 쓰인다. 예컨대 네트워크에서 데이터를 받아서 UI에 보여주는 상황을 생각해보면, 언제 네트워크에서 데이터를 다 받을지 알기 어렵습니다. 신호가 약한 와이파이를 쓸 수도 있고, 빵빵한 통신을 쓰고 있을 수도 있다. 이런 문제를 스트림은 데이터를 만드는 곳과 소비하는 곳을 따로 둬서 이 문제를 해결할 수 있다. 스트림이란 데이터의 추가나 변경이 일어나면 이를 관찰하던데서 처리하는 방법이다. (옵서버 패턴이다) dart Stream 클래스는 dart:core 에서 사용가능 dart:async 패키지.. 개발일지/Dart 2022. 11. 13. Future(비동기) - async , await 활용 - 3 이 코드의 특징은 async 함수를 호출할 때, await 키워드를 사용한 것이다. 결과(동시) 개발일지/Dart 2022. 11. 10. Future(비동기) - async , await 활용 - 2 이 코드의 특징은 async 함수를 호출할 때, await 키워드를 사용하지 않는 것이다. 결과(3초뒤) 개발일지/Dart 2022. 11. 10. Future(비동기) - async , await 활용 - 1 https://dartpad.dev/? DartPad dartpad.dev void main() async { final future = await helloWorld(); print(future); } Future helloWorld() { return Future.delayed(Duration(seconds: 3),() { final hello = "Hello World"; print(hello); return hello; }); } 이 코드의 특징은 Future을 return 하는 함수를 호출할 때, await 키워드를 사용한 것이다. main() 함수에서 await 키워드를 사용했기 때문에 async 함수로도 만들어 주었다. 결과(동시) 아마 뭐지? 하면서 의문이 들것이다. helloWorld().. 개발일지/Dart 2022. 11. 10. Future(비동기) - 2 https://dartpad.dev/? 코드테스트 해보기 DartPad dartpad.dev void main() { final future = helloWord(); print(future); } Future helloWord() { // 3초 뒤에 Future에서 "Hello World"가 나올거다 return Future.delayed(Duration(seconds: 3), () { final hello = "Hello World"; print(hello); return hello; }); } 이 코드의 특징은 Future을 return 하는 함수를 호출하지만 await키워드를 사용 하지 않는 것이다. main 함수에서 Future을 받아 future에 저장하고 출력한다. 결과 결과그림에 첫번째 줄.. 개발일지/Dart 2022. 11. 10. Future(비동기) - 1 https://dartpad.dev/? 코드테스트 해보기 DartPad dartpad.dev Future 라는 상자가 있습니다. 이 상자는 지금 닫혀있습니다 하지만 이 상자를 준 함수 말합니다. 지금은 그 상자는 닫혀있지만, 나중에 열리면 String나 error 이 나올 거야 두 경우 모두 대비를 해줘 ~~ 이상자를 받은 변수는 상자로부터 String가 나올 때를 대비해 then 메소드를 준비 해주어야 합니다. void main() { Future futureName = fName(); futureName.then((value) => print("value: $value")); print("기다리는 중"); } Future fName() { // 3초후 네이버라는 이름이 상자에서 나옵니다 return .. 개발일지/Dart 2022. 11. 10. Laxical Scope Dart에서 중첩함수 방식으로 함수 안에 함수 선언이 가능하다 // Lexical scope // Dart에서 중첨 함수 방식으로 함수안에 함수를 선언할 수 있다. void main() { var insideMain = true; void myFunction() { var inSideFunction = true; print(insideMain); void nestedFunction() { print("nested ${inSideFunction}"); } } myFunction(); } 개발일지/Dart 2022. 11. 9. 클로저(Laxical Closure) 1번에서 보면 add2변수에 makeAdder(2) 함수자체가 들어간다. 그럼 add2변수 자체가 매개변수 2를 가지는 함수가 되는 것이다. 즉 2가 살아있다는 것이다. 그리고 함수 호출을할때 매개변수에 새로운 값을 넣어주면 함수 안에있는 람다식에서 더하는 연산을하여 값을 출력해준다. 개발일지/Dart 2022. 11. 9. 익명함수 /// 익명함수 /// 대부분에 함수는 main(), printElement() 와 같이 이름을 가지고 있다. /// Dart를 비롯해 많은 언어들이 익명 함수, 람다(lambda),클로저(closure)라고 부르는 /// 이름이 없는 함수를 만들 수 있다. void main() { var list = ['apple','bananas','orange']; list.forEach((item) { print('${list.indexOf(item)} : ${item}'); }); } 개발일지/Dart 2022. 11. 9. 1급 객체 /// Dart에서도 함수는 1급 객체로 사용될 수 있다. 1급 객체의 조건은 /// 1. 변수나 데이터에 할당 할 수 있어야한다. /// 2. 객체의(생성자) 인자로 넘길 수 있어야 한다. /// 3. 객체의 리턴 값으로 리턴 할 수 있어야 한다. void main() { // 모든 함수는 리턴 값을 가진다. 리턴값이 없으면 null, 하지만 void 텅빈 - 아무것도 없는 의미이다. // void 선언하면 리턴을 하 수 없고, 문법적으로 막는다. List list = [1,2,3]; // 함수를 인자값으로 전달 받는다. // 한번 반복이 진행 될 때 parameter list.forEach(printElement); // 함수 리턴하기 var loudify = (msg) =>'!!! ${msg.toU.. 개발일지/Dart 2022. 11. 9. 이전 1 2 3 다음