목록분류 전체보기 (214)
파파비의 블로그
이것이 큰 틀이다. 이런 것들을 잘 익혀두어야할 것 같다. Chart라는 위젯은 지난 일주일 동안의 거래 내역을 Transaction 이라는 객체들로 구성되어 받는다. Transaction 에는 가격, 날짜, 물품 등의 data가 들어있다. 우리는 이중에서 지난 일주일 동안의 거래에 대해 요일별로 총액을 누적해서 보여주고자 한다. 그러기 위해선 먼저 Data를 만들어놓고 그 data를 시각화해야하는데, 여기서는 data를 만드는 방법을 보여준다. List get groupedTransactionValues 이 부분은 getter로 설정한 모습이다. 굳이 getter가 아니어도 function으로 설정해도 무관한 부분이다. return List.generate(7, (index) { List.generat..
1. 플러터 폴터 내부에 파일을 옮겨 놓는다. - lib파일안에 넣으며 안됨 - 보통 assets/fonts/ 경로를 만들어서 안에 넣어둠 2. pubspec.ymal 파일에 폰트를 넣는다. 이렇게 넣어야 하는데, 유의할 점들은 - 들여쓰기를 잘해야 한다. 제일 편한 방법은 드래그 한뒤에 ctrl+/ 누르면 자동으로 #이 지워진다. - bold를 추가하려면 weight를 아래에 추가해줘야하는데, 정확한 값은 따로 찾아내야 한다. 사용방법 1. Theme 폰트로 설정해두기 MaterialApp > theme > ThemeData > fontFamily : 이름은, pubspec에 fontfamily에 쓰인 그대로 따옴표 안에 갖다써야 한다. 그냥 하나의 위젯에만 쓰고 싶다면? 그럼 그 위젯의 Textsty..
ThemeData에서 속성중에 제일 많이 쓰는 것은 색깔, 특히 primary color가 아닌 primary Swatch를 쓰기를 권한다. primary Swatch는 하나의 색깔을 지정하면 그림자들이나 이런것들까지 관련 색으로 함께 맞춰준다. primary color는 딱 color만 바꾼다(이상할 수도 있다 어쩌면) 또한 ThemeData는 다른 어느곳에서나 context만 있으면 접근가능하다. Theme.of(context). 하면 관련 ThemeData에 접근이 가능해서 관련 속성들로 색을 지정하든 뭐든 할 수 있다. 이렇게 하면 장점이 무엇이냐면 Theme에서 색깔하나 바꾸면 전체가 다 동시에 바뀐다는 점이다. Theme에서 accent Color는 primary color의 반대되는 컨셉 컬..
해당 코드처럼, showBottomSheet를 활용하면, 바텀시트가 생겨난다. 몇가지 유의할 점은 1. showBottomSheet은 두가지 인수를 받는다, context와 builder이다. context는 scaffold에 관한 정보를 담고있어야 해서, floatingActionButton의 콜백으로 할 경우에는 Scaffold에 관한 정보다 없다며 에러가 뜰 것이다. 그럴때는 Builder로 감싸주어서 Build context를 가져오면 해결이 된다. 2. builder는 bottomSheet안에 들어가는 위젯을 return해야 한다. 여기에서 인자인 context는 플러터가 알아서 넣는 것으로 그냥 받는 처리만하면 된다. _로 처리해도 무관하다. 3. bottomSheet를 끄는 방법은 Navig..
이 코드를 실행할 경우 무조건 소수점 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관련 위젯들에게는 대부분 해당하는 내용일 것이라고 추측된다.