목록개발/flutter (131)
파파비의 블로그
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 파..
1. 명령 프롬프트를 킨다. 2. 원하는 곳으로 cd를 통해 이동한다 3. 'flutter create 원하는프로젝트이름' 을 입력한다. 물론 이때 이미 flutter가 path에 설정되어서 flutter 명령어를 인식할 수 있게 해두어야 한다! 또한 vs code에 flutter가 익스텐션으로 깔려있어야 함. 한마디로 설치과정을 제대로 진행했어야 위 단계들도 잘 진행된다 특이 한 점은 에뮬레이터를 키기 위해선 안드로이드 스튜디오에 들어가서 에뮬레이터를 따로 켜주어야 한다. 안드로이드 스튜디오에서 어떻게 가상 에뮬레이터를 키는지는 따로 다루진 않겠다. 아무튼 안드로이스 스튜디오를 경유해야하는 점 때문에 그래서 안드로이드 스튜디오를 사용하는게 더 편리할 수 있다. 그런데 VS code는 훨씬 가볍기 때문에..