[flutter] useCallback 훅 위젯의 사용법과 예제
useCallback
훅은 메모이제이션된 콜백 메소드를 생성할 때 사용됩니다. 이 훅을 활용하여 불필요하게 새로운 콜백 메소드를 생성하는 것을 방지하고 성능을 최적화할 수 있습니다.
useCallback
훅의 사용법
useCallback
을 사용하려면 다음과 같은 방법으로 코드를 작성합니다.
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
String _text = '';
void _setText(String newText) {
setState(() {
_text = newText;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('useCallback Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
_text,
style: TextStyle(fontSize: 24),
),
InputWidget(
onTextChanged: _setText,
),
],
),
),
);
}
}
class InputWidget extends StatelessWidget {
final Function(String) onTextChanged;
InputWidget({required this.onTextChanged});
@override
Widget build(BuildContext context) {
return Container(
padding: EdgeInsets.all(16),
child: TextField(
onChanged: (text) {
onTextChanged(text);
},
),
);
}
}
위 예제에서 useCallback
을 사용해보겠습니다.
final setTextCallback = useCallback((String newText) {
_setText(newText);
}, [_setText]);
useCallback
훅의 예제
다음은 useCallback
을 사용하여 성능을 최적화하는 예제입니다.
주의사항
- 홈 기능에서의 콜백 메소드 재생성을 최적화하기 위해
useCallback
훅을 사용하는 방법을 알아보았습니다.
결론
useCallback
훅은 메모이제이션된 콜백 메소드를 생성하여 성능을 최적화하는 데 도움이 됩니다. 위의 예제 코드를 참고하여 실제 애플리케이션에서 useCallback
훅을 적절히 활용해보시기 바랍니다.
더 자세한 내용은 Flutter 공식 문서를 참고하시기 바랍니다.