목록분류 전체보기 (214)
파파비의 블로그
Dart에서는 iterable이라는 개념이 있다. 이것은 반복이 가능한...집단 이란 뜻으로, list나 array, 등을 의미한다. Map은 iterable이 아니다. 왜냐면 순서가 없으니까. 하지만 linked Map은 순서가 있으니 iterable이다. (자료구조를 알면 좀 더 명확히 될 것이다. iterable은 for처럼 한바퀴돌릴 수 있는 자료구조를 얘기한다, array나 linked Map은 다음 data의 위치를 알 수 있어서 iterable 하지만, Map의 경우 Key-value 구조이기 때문에 순환(iterate)하는게 불가능하다) iterable 뜻 A collection of values, or "elements", that can be accessed sequentially. (..
Map은 Key와 Value로 이루어진 쌍이다. 하나의 Map안에는 다양한 Key와 Value의 쌍들이 존재할 수 있다. Map을 List로 하면 다양한 문제와 그에 따른 다양한 보기들을 하나의 자료구조에 포함시킬 수 있다. 이렇게 되면 한번에 접근이 가능해져서 매우편리해진다. 변수들도 많이 필요없다. 다음에도 사용할 수 있도록 꼭 익히도록 한다. Map은 현재 Map 인데 타입을 정해주지 않으면 둘 다 다이나믹이 된다.
Stateful 위젯 안에 Stateless 위젯들을 넣습니다. Stateless 위젯들은 생성자에 data가 들어갑니다. Stateful 위젯들의 data가 바뀌게 되면, Stateless를 생성하는데 들어갔던 변수들의 값도 변할 수 있습니다. 만약 변하게 되고 그 상태에서 setstate이 실행되면 Stateless위젯들이 다시 빌드 되면서 마치 바뀐것 같은 효과를 줍니다. 하나의 stateful안에 다양한 stateless위젯들을 넣어서 한번에 컨트롤하는 구조는 굉장히 자주쓰입니다. 특히 Stateless위젯으로 버튼이나 텍스트를 넣고, 버튼의 콜백을 생성자에 넣어서 입력하게 되면 버튼이 눌렸을 때 stateful의 data를 바꾸는 함수가 실행되게 할 수도 있습니다. 그러면 알아서 stateful..
Dart에서는 multi - constructor를 지원합니다. 이 뜻은, 생성자를 여러개 제공한다는 얘긴데, 멀티생성자는 classname.constructorname( parameter ){ } 처럼, .을 이용해서 추가적으로 만들 수 있습니다. 멀티 생성자의 장점은, 만약 속성이 굉장히 여러가지 인 경우, 멀티생성자를 통해 더 다양한 경우들에 대해 이름을 제공하면서 값을 넣게 할 수 있습니다. 플러터에서 대표적인 multi - constructor를 제공하는 class 중에는 EdgeInsets가 있습니다. 보통 마진이나 패딩의 값을 설정할 때하는데, 위 아래 왼쪽 오른쪽에 대한 값을 설정해야합니다. EdgeInsets는 EdgeInsets.only, EdgeInsets.all EdgeInsets...
플러터에서는 state라는 개념을 사용합니다. State란 무엇일까요? State란 앱에서 사용되는 data들을 의미합니다. cf) 그럼 State management는 무엇일까요? 앱에서 사용되는 data들을 관리하는 방법을 의미하겠죠? 아무튼, 플러터에는 State가 2개로 나누어질 수 있습니다. App state와 Widget state입니다. - (1)App state App state은 앱 전반에 걸쳐 사용되는 data입니다 앱 여기저기 전반적으로 다 필요하고, 한쪽에서 app state를 변경하면 다른 쪽에서도 data변경을 반영할 필요가 있겠죠? - (2) Widget state 또 Widget state는 widget 내부에서만 사용되는 data입니다. App state와의 차이점이라면 위..
이 코드를 실행해보면 까만 바탕에 좌측 상단에 hello라고 뜨게 됩니다. 앱이긴 한데... 뭔가 디자인적으로 굉장히 별로죠 그 이유는 우리가 일일이 디자인적인 요소들을 처리해주지 않았기 때문입니다. 그런데 디자인적으로 모든 것을 처리하는게 굉장히 어렵습니다. 요소들도 매우 많구요 그래서 플러터에서는 기본적인 앱에서 디자인적인 뼈대를 구성하는 위젯을 만들어놓았습니다. 그게 바로 Scaffold 위젯입니다. 플러터 API문서를 확인해보면 Scaffold에 대해서 다음과 같이 설명하고 있습니다. (https://api.flutter.dev/flutter/material/Scaffold-class.html) Implements the basic material design visual layout struct..
저번에 설명했던 코드의 일부분입니다. 저기 보면 MaterialApp이라는 생성자 안에 home: 이렇게 표시된 부분이 있습니다. 오늘은 여기에 관하여 자세히 다루어보고자 합니다. 우리는 class를 만들고 거기에 여러 속성들을 만들어 놓을 수 있습니다. 그리고 해당 class의 객체를 생성할 때, 일부 속성 값들을 생성자의 인자로 넣어 값을 바로 부여할 수 있죠. Dart에서도 역시 그것이 가능합니다. 위 코드는 Person Class의 생성자입니다. 생성자는 class에서 일반 메소드와 비슷하지만, 생성할 때 한번만 호출이 가능한 메소드이며, 특징은 return type을 암시하지 않는다는 것입니다. 당연히 해당 class의 객체를 생성하니 굳이 써줄 필요가 없죠. 위 코드처럼 생성자가 표시되어 있을..
플러터는 어떤식으로 작동하는 것일까요? 너무 어려운 질문이지만, 초반에 어떻게 시작하는지에 대해 다뤄보고자 합니다. 위 코드를 입력해서 실행을 누르면, 좌측 상단에 빨간 글씨로 hello가 나타나고, 배경은 검정색일 것입니다. 아주 허접하지만 간단한 앱이 만들어진 것이죠. 하지만 저기 코드들에는 많은 의미들이 숨어있습니다. 하나하나 뜯어보도록하죠. void main() 이 void main() 함수는 dart에서는 진입점에 해당합니다. dart 파일을 실행하면, main() 함수를 찾아서 실행하게 됩니다. 따라서 함수의 이름을 바꾸거나 하면 절대 안됩니다. 시작을 못하니깐요.. import 'package:flutter/material.dart'; 플러터에서 제공한 패키지 중 material.dart 파..