[flutter] 플러터에서 useContext 훅(hook)을 이용한 테마 전환 기능 구현하기
플러터(Flutter) 앱을 개발할 때, 테마 전환 기능은 사용자 경험을 향상시키는 데 중요한 부분입니다. useContext 훅을 이용하면 플러터 앱에서 테마 전환 기능을 간단하게 구현할 수 있습니다. 이 기능은 사용자가 화면을 어둡게 하는 다크 모드 또는 다시 밝게 하는 라이트 모드로 전환할 수 있는 기능을 제공합니다.
useContext 훅이란?
React에서 가져온 useContext 훅은 Flutter Hooks 라이브러리를 이용해 플러터 앱에서 상태를 관리할 수 있게 해줍니다. 이를 이용해 앱 전역에서 테마를 관리하고 테마 전환 기능을 구현할 수 있습니다.
테마 전환 기능 구현하기
다음은 useContext 훅을 이용한 테마 전환 기능을 구현하는 간단한 예제입니다.
import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
void main() => runApp(MyApp());
class MyApp extends HookWidget {
@override
Widget build(BuildContext context) {
final ThemeData theme = useMemoized(() {
return ThemeData(
brightness: useValueListenable(isDarkMode) ? Brightness.dark : Brightness.light,
// 기타 테마 속성들...
);
});
return MaterialApp(
theme: theme,
home: MyHomePage(),
);
}
}
var isDarkMode = ValueNotifier<bool>(false);
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('테마 전환'),
),
body: Center(
child: ElevatedButton(
child: Text('테마 전환하기'),
onPressed: () {
isDarkMode.value = !isDarkMode.value;
},
),
),
);
}
}
결론
이제 useContext 훅을 이용해서 플러터 앱에서 간단히 테마 전환 기능을 구현하는 방법을 알아보았습니다. 이를 응용하여 사용자에게 다양한 테마 옵션을 제공하고 더 나은 사용자 경험을 제공할 수 있습니다.
현대의 앱은 사용자들이 선호하는 테마를 선택할 수 있도록 해주는 것이 중요합니다. useContext 훅을 이용하면 테마 전환 기능을 비교적 쉽게 구현할 수 있고, 사용자들에게 보다 많은 선택권을 제공할 수 있습니다.
참고 자료: