본문 바로가기

Flutter23

[Flutter] UI(5) - ExpansionTile을 활용하여 TreeView 만들기 flutter에서 기본 위젯으로 TreeView를 지원하지는 않는다. 하지만 pub.dev에 검색해보면 flutter_fancy_tree_view와 같이 잘 만들어진 패키지들을 찾아볼 수 있다. 하지만 학습의 차원에서 직접 TreeView를 만들어 보았다. 처음 만들자고 생각했을 때 부터 쉽지는 않을 것 같다고 생각했지만, 실제로 해보니 훨씬 복잡하다고 생각 되었다. 우선 TreeView를 만들기 위해서는 1. 재귀로 위젯 호출 2. ExpansionTile 위젯 (optional) 3. CustomPaint 위젯 세 가지 개념을 알고 있어야 한다. 1. 재귀로 위젯 호출 만약 내가 TreeView를 현업에서 만든다면, 무조건 재귀를 통해서 하위 데이터들을 불러올 것이다. 트리구조가 변경 될 때에도 수정.. 2024. 1. 2.
[Flutter] Widget(8) - ListTile에서 leading, tailing에 위젯 여러개 넣는 법 ListTile을 사용하면 leading과 tailing에 손쉽게 아이콘과 같은 위젯들을 추가할 수 있다. 이런 장점때문에 UI를 그릴 때 자주 사용되게 되는데, Leading에 아이콘을 여러게 넣고 싶어지는 경우가 있을 것이다. 이를 위해 leading에 Row위젯을 사용하여 두개의 아이콘을 넣어보자. 만약 ListTile( title: Text("This is my ListTile"), trailing: Row( children: [ Icon(Icons.call), // icon-1 Icon(Icons.message), // icon-2 ], ), ) 이렇게 Row를 사용해서 Icon을 여러개 넣어주면 "Leading widget consumes entire tile width. Please use .. 2023. 12. 26.
[Flutter] UI(4) - ExpansionTile, Listile 아이콘 앞에 위치시키기(animation) ExpansionTile Widget을 이용해서 ui를 만들던 중 tailing에 위치한 아이콘을 leading 위치로 옮겨서 표현해야 하는 일이 생겼다. 애니메이션 효과 없이 단순히 위치를 옮기려면 ExpansionTile의 tailing에 SizedBox()를 넣어주고, leading에 아이콘을 넣어주면 끝이나지만, 기존에 tailing이 갖고 있던 회전 에니메이션을 그대로 추가해주기 위해서는 다른 위젯들의 활용이 필요하다. 코드 class TreeView extends StatefulWidget { final String node; final List? children; final bool initiallyExpanded; const TreeView({ Key? key, required this.n.. 2023. 12. 25.
[Flutter] The parameter can’t have a value of ‘null’ because of its type in Dart 에러 해결 플러터에서 새로운 위젯이나 함수를 만들었을 때 `The parameter can’t have a value of ‘null’ because of its type in Dart`에러가 발생하는 것을 종종 볼 수 있다. 이 메세지를 번역해보면 `다트에서는 파라미터로 null을 가질 수 없다`는 것이다. 다트에서 파라미터로 null을 가질 수 없는 이유는 null safety가 활성화 되어있기 때문이다. non-nullable 인자와 key는 null 이 될 수 없다. 함수와 생성자를 통해 null 값이 아님이 확인이 되어야 null safety를 통과할 수 있다. class Header extends StatelessWidget { const Header({ Key key, }) : super(key: ke.. 2023. 12. 21.