[flutter] 플러터에서 Visibility 속성을 이용한 사진 필터 적용하기

플러터 앱을 개발할 때 종종 이미지 필터를 적용해야 하는 상황이 있습니다. 그런데 뷰를 꾸밀 때마다 이미지에 필터를 적용하지 않아도 되는 경우도 있습니다. 이때 Visibility 위젯을 사용하여 필터를 동적으로 제어할 수 있습니다. 이 포스트에서는 Visibility 속성을 이용하여 이미지에 필터를 적용하는 방법을 알아보겠습니다.

1. 필터를 적용할 이미지 가져오기

가장 먼저 앱에 표시될 이미지를 가져와야 합니다. 플러터에서는 Image 위젯을 사용하여 이미지를 화면에 표시할 수 있습니다.

Image.network('https://example.com/image.jpg')

위와 같이 Image.network를 사용하여 URL로부터 이미지를 가져올 수 있습니다.

2. Visibility 속성으로 필터 적용하기

이제 Visibility 위젯을 사용하여 이미지에 필터를 적용해보겠습니다. 필터를 적용한 이미지에 Visibility 속성을 부여하여 필터를 활성화/비활성화할 수 있습니다.

Visibility(
  visible: _isFilterApplied, // 필터를 적용할지 여부를 제어하는 변수
  child: ColorFiltered(
    colorFilter: ColorFilter.mode(Colors.grey, BlendMode.saturation),
    child: Image.network('https://example.com/image.jpg'),
  )
)

위 코드에서 Visibility 위젯은 _isFilterApplied 변수에 따라 이미지에 필터를 적용합니다. 필터를 적용할지 여부를 제어할 수 있는 변수를 설정하고, 필터를 적용할 이미지를 ColorFiltered 위젯으로 감싸면 됩니다.

3. 필터 적용 여부 제어하기

필터를 적용할지 여부를 동적으로 제어하려면 상태 변화를 감지할 수 있는 상태관리를 할 수 있는 StatefulWidget을 사용해야 합니다.

bool _isFilterApplied = false;

// 필터 적용 여부를 변경하는 함수
void toggleFilters() {
  setState(() {
    _isFilterApplied = !_isFilterApplied;
  });
}

위 코드에서 _isFilterApplied 변수의 값을 변경하는 toggleFilters 함수를 통해 필터의 적용 여부를 변경할 수 있습니다.

이제 위의 예제를 기반으로 필터를 동적으로 적용하거나 해제하는 플러터 앱을 만들어 볼 수 있습니다. 필요에 따라 다양한 필터를 적용하여 앱을 더욱 풍부하게 만들어보세요.

결론

Visibility 속성과 ColorFiltered를 사용하여 플러터 앱에서 이미지에 필터를 적용하는 방법을 살펴보았습니다. 이를 통해 사용자 경험을 개선하고 앱을 더욱 흥미롭게 만들 수 있습니다. 필터 적용 여부를 동적으로 제어하는 방법과 다양한 필터를 적용하는 방법을 익히면, 플러터 앱을 더욱 다채롭게 표현할 수 있을 것입니다.

참고 문헌: