-
Flutter: collection, generic공부 기록/Flutter 2021. 11. 23. 00:02728x90
참고강좌: https://www.youtube.com/watch?v=6AUuEP_n38Y&list=PLQt_pzi-LLfpcRFhWMywTePfZ2aPapvyl&index=24
Flutter에서는 array를 List라고 함. 두가지가 있음
- 하나는 fixed-length list(지정한 개수만 올 수 있음): var number = new List(5) .. 길이가 5인 List
- 또 다른 하나는 growble list(길이 제한 없음):var number = new List() .. 길이 제한 없음List 안에 들어가는 것들응ㄴ 하나의 객체로 취급되어 다양한 타입이 들어갈 수 있음. int, double, boolean, function까지,
즉 List number에서 <dynamic> 형의 데이터들을 가진 List 타입이다.
List<dynamic> number = new List()라고 쓸 수 있음
-> 여기서 < >가 제네릭 타입을 의미. 제네릭이란? 콜렉션들의 데이터 타입을 원하는대로 지정하는 방법을 제공
< > 안에 리스트에 들어갈 타입을 지정하면됨. e.g. List<int>, List<String> -> 이렇게 지정하면 해당 데이터 타입을 가지지 않으면 에러 발생여기서도 Map이라는 collection의 데이터들을 generic 기법으로 타입을 지정한 것이다.
Colum위젯의 경우도 children으로 데이터를 <Widget>으로 지정되어있기 때문에 배열 [ ] 안에 RiasedButton위젯과 같이 위젯만 올 수 있다.
Colum 위젯을 ctr+click 눌러 소스코드를 확인하면, Column 위젯의 생성자 안에 children이라는 아규먼트가 있고, children은 Widget 형의 generic 타입을 가지고 있다. -> 즉, List안의 데이터들은 모두 Widget이어야 한다.
<Widget> 대신 <dynamic>으로 해도 되지만, <dyniamc>이나 var number를 사용하는 것이 항상 효율적이지는 않음. 다트는 type safety 언어로 타입을 판별할 수 있기 때문에, 앱 구동환경이 아닌 컴파일 시 변수와 변수의 타입이 일치하는지 확인함. 타입은 필수지만, 타입추론 기능으로 타입을 일일히 지정하지 않아도됨. 하지만 코드의 안정성을 위하여 타입을 지정하는 것을 추천함.
예를 들어, 이렇게 구현해도 되지만 가긊적 List<String>으로 작성하기!
*addAll: [ ] 에 있는 모든 데이터를 List에 추가https://www.youtube.com/watch?v=dSysQZrkTlo&list=PLQt_pzi-LLfpcRFhWMywTePfZ2aPapvyl&index=25
왜 제네릭스가 편한가? Circle 타입이 인자로 전달될 Slot을 생성했는데, squre가 전달되면 에러 발생. Slot<T> 로 지정하면 타입을 추후 지정할 수 있도록 함. -> 제네릭스 사용한 것임.
어떤 타입을 사용할 지 몰라 다 준비했으니, 필요한 타입을 골라 써라.'공부 기록 > Flutter' 카테고리의 다른 글
Flutter: 스낵바, BuildContext (0) 2021.11.28 Flutter: 로그인 & 주사위 게임 실습 (0) 2021.11.27 Flutter: Navigator, BuildContext (0) 2021.11.21 Flutter 기초 공부: Rows, Columns, Flutter outline & shorcuts, Expended widget (0) 2021.11.16 Flutter 기초공부: padding, margin (0) 2021.11.11