이번 주차에는 섹션 13과 섹션 14에 대해서 학습했습니다. 저는 비동기와 라이프싸이클에 초점을 맞춰 서술했습니다.
- gelocator : 위치를 찾는 라이브러리
void getLocation() async{
Position position = await Geolocator()
.getCurrentPosition(
desiredAccuracy: LocationAccuracy.high
);
}
- async 프로그래밍 ?
-
synchronous? asynchronous?
-
- 오래 걸리는 함수가 동작할 때, 동시에 다른 일을 할 수 있게 만든다.
- 오래 걸리는 함수가 동작할 때, 동시에 다른 일을 할 수 있게 만든다.
-
Future<String> task2() async{
Duration threeSeconds = Duration(seconds: 3);
String result;
await Future.delayed(threeSeconds, () {
result = 'task 2 data';
print('Task 2 complete');
});
return result;
}
API
- Application Programming Interface
- 날씨 사이트의 API를 사용해보자
JSON Parsing and Dynamic Types
- JavaScript Object Notation
http.Response response = await http.get('url');
if (response.statusCode == 200){
String data = response.body;
var temperature = jsonDecode(Data['main']['temp'];
...
화면 전환하기
Navigator.push(
context, MaterialPageRoute(
builder: (context){
return CityScreen();
},
),
);
Navigator.pop(context);
- push로 화면을 띄울 수 있고, pop으로 화면을 내릴 수 있다.
onChanged : //텍스트필드에서 변화를 인지할 수 있다.
비동기
단일 쓰레드인 플러터
- 플러터는 단일 쓰레드로 실행되기 때문에 특정 동작을 기다릴 때 어플이 멈춘다.
느린 작업을 만났을 때
- 느린 작업의 종료를 알리는 Listner(Future)가 생성된다.
- Listner가 main thread에 리턴되고, 하던 작업을 다시 수행한다.
- 느린 작업이 끝났을 때 event loop는 끝난 것을 보고,
- 연결된 메서드를 Main thread에 올린 뒤 해당 작업을 마무리한다.
라이프사이클
- createState()
- 빌드를 지시할 때 호출되는 메서드
- buildContext(위젯이 배치된 위젯 트리의 위치)가 State에 할당된다.
- mounted == true
- buildContext가 할당되었는가?
- setState()를 호출하기 위한 조건
- initState()
- 위젯이 생성될 때 호출.
- didChangeDependencies()
- 위젯이 의존하는 객체가 호출될 때마다 호출
- build()
- Widget을 리턴한다.
- didUpdateWidget()
- 위젯을 재구성할 때 initState()를 대체
- setState()
- build context의 위젯을 다시 빌드
- deactivate()
- 거의 사용되지 않는 메서드, State가 제거될 때 호출
- dispose()
- State 제거
- mounted == false
- setState를 호출할 수 없는 상태
Exception Handling & Null Aware Operators
- try, catch
- someValue ?? defaultValue : null일 경우 예외처리
'Flutter' 카테고리의 다른 글
Flutter 2Team Animation (0) | 2021.03.01 |
---|---|
Flutter 2Team Dart Static (0) | 2021.03.01 |
[Flutter 2 team]섹션 10:Quizzler [List, Class, Object] (0) | 2020.12.31 |
[Flutter - 1team] 섹션 9 : Xylophone - Using Flutter and Dart Packages to Speed Up Development (0) | 2020.12.25 |
[Flutter - 1team]섹션 7 : Dicee - Building Apps with State (0) | 2020.11.29 |