[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 훅을 적절히 활용해보시기 바랍니다.

더 자세한 내용은 Flutter 공식 문서를 참고하시기 바랍니다.