InkWell과 Ink의 역할
InkWell: 클릭 시 리플(물결) 효과를 제공하는 위젯입니다. InkWell 자체는 리플 효과를 표시할 때만 색상을 입힙니다. 이 리플 효과는 Material 위젯을 필요로 합니다.
Ink: InkWell이 작동하는 영역을 명시적으로 지정하기 위해 사용됩니다. Ink 위젯은 주로 Container 같은 위젯과 결합할 때 리플 효과가 그 영역에 제대로 적용되도록 도와줍니다.
InkWell은 리플 효과를 표현할 때, 해당 효과를 Material 위젯의 경계 안에서만 표시할 수 있습니다. 만약 Material 위젯이 없다면, 리플 효과가 제대로 표시되지 않거나, 예상하지 않은 방식으로 그려질 수 있습니다. 이 문제를 해결하기 위해 Ink를 사용하면, InkWell의 리플 효과가 Ink의 경계 내에서 올바르게 표시됩니다.
Ink 위젯 자체는 onTap과 같은 터치 이벤트를 처리할 수 있는 기능이 없습니다. Ink는 단순히 그리기 관련 작업(예: 색상, 모양, 이미지 등)을 위한 위젯입니다. 터치 이벤트를 처리하고 리플 효과를 제공하는 역할은 InkWell 또는 GestureDetector와 같은 위젯이 담당합니다.
네, InkWell의 부모로 Material 또는 Ink 위젯을 사용할 수 있습니다. InkWell은 잉크 효과(리플 효과)를 제공하는데, 이 효과는 Material 또는 Ink 위젯 내부에서만 제대로 동작합니다. 만약 InkWell이 Material이나 Ink 위젯의 자식으로 배치되지 않으면, 리플 효과가 보이지 않거나 예상대로 동작하지 않을 수 있습니다.
Material vs Ink
Material: Flutter의 모든 InkWell 위젯은 Material 위젯 내에서 사용되어야 합니다. Material 위젯은 Flutter에서 기본적으로 리플 효과를 구현할 때 사용하는 표면입니다. InkWell이 Material 위젯의 자식이 되면, 리플 효과가 제대로 표시됩니다.
Ink: Ink 위젯은 Material 위젯의 자식으로 사용되며, 배경을 칠할 수 있습니다. Ink 위젯은 InkWell과 함께 사용할 수 있으며, 배경에 색상이나 이미지 같은 것을 넣을 수 있습니다.
Material -> Ink -> Inkwell