Widget은 Flutter 앱의 모든 시각적 요소를 표현한다.
Button, Text, mage 등 사용자 인터페이스의 모든 요소는 위젯으로 표현된다.
: 현재 프로젝트 중인 앱에서 자주 사용되는 ListView
1.ListView
ListView는 단순한 목록 표시를 할 때 주로 사용함ListView 에서도 onTap을 통해 처리가능하지만 수동으로 구현해야 함AnimatedListAnimatedListState를 통해 항목 삽입 및 제거 애니메이션 제어 가능함 (insertItem, removeItem 메서드 호출)GlobalKey를 사용하여 목록 상태에 접근가능하므로 상태관리에 유용함Make your app accessibility
ExcludeSemantics : 하위 항목들의 모든 의미를 삭제하는 위젯 MergeSemantics : 하위 항목들의 의미를 병합하는 위젯 MergeSemantics (
child: Row (
children: const [
Text('Flutter'),
Text('Mapp'),
],
),
);
/*
원래는 양 옆으로 'Flutter'와 'Mapp' Text가 나란히 출력되어야 하지만,
두 Text 항목이 병합되어 하나의 행 공간에 column 형태로 출력된다
*/
Semantics : 사용자 UI의 부가적인 의미를 제공해준다Bring animations to your app
AnimatedAlign : 지정된 기간 동안 child에 해당하는 부분의 위치를 바꾸는 것AnimatedBuilder: 복잡한 위젯 자체에 애니메이션 포함 시AnimatedWidget, AnimatedController 등 사용 시 부드러운 애니메이션 구현 가능AnimatedContainer : borders, background images, shadows, gradients, shapes, padding, width, height, alignment, transforms 등..을 적용해 애니메이션 적용할 때AnimatedCrossFade: 2개 다 위젯형태이고, 비슷한 형식인데 점진적으로 다른 위젯으로 바뀔 때 사용AnimatedList : 추가 및 삭제가 빈번히 이뤄지는 List 형식 일때AnimatedListState : insertItem과 함께 항목을 삽입하면 애니메이션이 실행되기 시작하는데 항목의 위젯이 필요할 때마다 애니메이션은 AnimatedList.itemBuilder로 전달된다. removeItem 으로 항목을 제거하면 해당 항목의 애니메이션이 삭제되고 제거된 항목의 애니메이션은 removeItembuilder 파라미터로 전달된다. AnimatedOpacity : Fade 애니메이션 적용AnimatedPositioned : Stack에서만 작동하며 위치만 변경된 하려할 때 (가로 / 세로는 바뀌어도 됨) AnimatedSize : 주어진 기간이나 클릭 시, 위젯크기를 바꿔줌AnimatedWidget : Listenable 한 값이 변경될 때 rebuild 되는 WidgetDecoratedBoxTransition : Box에 적용가능한 다양한 속성을 애니메이션화한 것FadeTransiton : Fade 애니메이션 Hero : 페이지 경로가 팝업되거나 밀리면서 전체화면이 바뀌는 것.ScaleTransition : 위젯이 서서히 확대 및 축소되는 애니메이션