목록개발 (194)
파파비의 블로그
이 코드를 실행할 경우 무조건 소수점 2자리 string이 반환된다. e.amount는 double 값을 갖는다. 근데 toStringAsFixed로 소수점 2자리 string으로 고정이 가능하다. 원래는 $뒤에 어떤 값이 들어가도 tostring화 되지만, 소수점 때문에 toStringAsFixed을 사용하는 것이다.
상위 위젯으로 (SingleChildScrollView)을 넣어주면 된다. 그러나 이것을 사용하기 위해서는 column이 자신의 높이 사이즈를 정확하게 아는 것이 중요하다. Scaffold에서 body column이 있고, 그 위젯 바로 위에 SingleChildScrollView을 감싸면 SingleChildScrollView는 높이를 인지한다. (화면 맨 위 -화면 맨 아래) 그런데 만약 단순히 남는 공간에 나머지 부분을 차지하는 column을 SingleChildScrollView로 감싸면 제대로 작동하지 않는다. 에러가 날 수도 있다. 이유는 column이 높이를 정확히 모르기 때문에 어디서부터 스크롤을 작동시켜야하는지 모른다. (Expand같은거에 감싸진 column은 왠지 안될듯..) 이럴 때..
StatefulWidget은 setstate을 하면 build가 다시 실행된다. 그래서 혹시 변경된 부분들이 있는 것들은 dirty상태가 되어 다시 create되고, 별 차이없는 애들은 repaint된다. 문제는 여기서 생긴다. 불필요하게 계속해서 repaint하면 자원낭비가 된다. 따라서, StatefulWidget위젯 안에 변경되는 부분들이 적다면, 그 변경되는 부분만 따로 떼어내어서 setstate의 영향을 받도록 조정하는 작업이 필요하다. 안그러면 쓸떼없이 계속 repaint를 많이하게 될 것이다.
1. onChange 콜백 때마다, 변수에 해당 text값을 저장하도록 직접 지시하는 방법이 있을 수 있다. 2. Controller를 만들어서, 해당 TextField에 붙여놓으면, 입력된 내용을 Controller를 통해서 언제든지 얻을 수 있다. 3. 해당 FlatButton을 누르면 둘다 잘 작동하는것을 확인할 수 있다. 이런 Controller 원리는 TextField에만 해당하는 것은 아닐 것이다. input관련 위젯들에게는 대부분 해당하는 내용일 것이라고 추측된다.
TextField는 데코레이션에 InputDecoration을 사용한다. 윤곽이나, 기타 꾸미기는 전부다 여기서 가능하다 Container는 decoration에 BoxDecoration을 넣을 수 있다. (다른 것들도 넣을 수 있을진 아직 모르겠다) 아무튼 이렇게 되면 Border 설정도 가능하고, 특히 Border의 색도 다음처럼해서 컨트롤 할 수 있다.
플러터나 dart에서는 Datetime객체의 형태를 변형하는 것이 없다. 그래서 외부 패키지를 끌고 와야한다. intl package를 끌고와서 쓰면 좋다. (https://pub.dev/packages/intl#-installing-tab-) 사용방법은 다음과 같다. 1. DateFormat 생성자를 사용. 2. DateFormat 생성자 인수에 보여지길 원하는 형태를 넣고, (형태에 관해서는 https://pub.dev/documentation/intl/latest/intl/DateFormat-class.html 참고) 3. .format의 인수로 Datetime 객체를 넣으면 된다. 참고로 2. 대신 이런식으로 이미 정해져있는 format을 가져와서 써도 된다. 마지막으로 형태에 관해서 간단히 얘기..
자료를 구성하는 방법은 1) Map을 활용하는 방법과 2) class를 직접 만들어서 거기에 필요한 data를 엮어 두는 방법이 있다. 이렇게 필요한 자료구조를 구성한다. 그 다음 필요한 곳에서 data를 List로 구성하면 된다. (꼭 리스트가 아니어도 된다.) 이렇게... 그리고나서 이 list를 안에 있는 객체들의 data를 참고해서 card를 만들든 하면 된다. 아니면 여기에 data를 넣어도 되고. 어떻게 만들까? dynamic하게 만들려면 map이 좋다. 이런 식으로 말이다. 여기서 눈여겨 보면 좋을 것이. "Data > 위젯으로 변환" 하는 과정이 1) Data list를 만들고 2) 해당 data를 활용한 위젯들이 들어가야 곳에 바로 리스트 넣고 거기서 .map으로 위젯으로 변환하는 것.
위 코드를 보면 칼럼 안에 2개의 카드가 있다. 코드를 실행해보면 다음처럼 나옵니다. 일단 카드의 사이즈가 굉장히 작죠. 왜이럴까요? Card는 위에 부모가 없으면 자식 사이즈에 맞춥니다. Text는 부모의 사이즈에 자신의 공간사이즈를 맞추고요. (꽉 채우는건 아니고 그 안에서 자신에게 딱 맞는 사이즈로.) 그렇다면 좀 넉넉하게 여유공간을 주려면 어떻게 해결 할 수 있을까요? 마진을 주거나, text에 container를 입히거나 Card에 container를 입힐 수 있습니다. 이런 관계를 어떻게 다 알 수 있을까? 없다. 그럴 때마다 꼭, flutter doc를 보거나, flutter doc API를 보거나, 직접해보거나... 웬만한 내용들 다 적혀있으며 직접 해보면서 숙달시켜야 한다.