[flutter] 플러터에서 useEffect 훅(hook)을 사용하여 API 호출하기

플러터(Flutter)에서 useEffect 훅을 사용하여 API를 호출하는 방법에 대해 알아보겠습니다. useEffect 훅은 위젯이나 상태가 업데이트될 때 사이드 이펙트를 발생시키기 위해 사용됩니다. API 호출은 주로 네트워킹 작업으로, useEffect 훅을 통해 이를 처리할 수 있습니다.

1. useEffect 훅 이해

useEffect 훅은 플러터의 상태 변화나 위젯 랜더링과 무관한 작업을 수행하기 위해 사용됩니다. 예를 들어, API 호출, 구독, 타이머 설정 등과 같이 상태의 변화와는 관련이 없는 작업을 수행할 수 있습니다.

2. API 호출 예제

다음은 useEffect 훅을 사용하여 API를 호출하는 간단한 예제입니다.

import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'dart:convert';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: MyWidget(),
    );
  }
}

class MyWidget extends StatefulWidget {
  @override
  _MyWidgetState createState() => _MyWidgetState();
}

class _MyWidgetState extends State<MyWidget> {
  List<String> data = [];

  @override
  void initState() {
    super.initState();
    fetchData();
  }

  void fetchData() {
    http.get('https://api.example.com/data')
        .then((response) {
          setState(() {
            data = json.decode(response.body);
          });
        });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('API 호출 예제'),
      ),
      body: ListView.builder(
        itemCount: data.length,
        itemBuilder: (context, index) {
          return ListTile(
            title: Text(data[index]),
          );
        },
      ),
    );
  }
}

이 예제에서는 initState 메서드를 사용하여 위젯이 생성될 때 fetchData 메서드를 호출하여 API를 호출합니다. API 응답이 도착하면 상태를 업데이트하고 화면을 다시 그립니다.

3. 마치며

이제 useEffect 훅을 사용하여 플러터 앱에서 API 호출을 수행하는 방법에 대해 알아보았습니다. 이를 통해 앱의 네트워킹 작업이나 기타 비동기 작업을 처리할 수 있습니다.

플러터 공식 문서(https://flutter.dev/docs)에서도 useEffect 훅과 비동기 작업 처리에 대한 자세한 내용을 확인할 수 있습니다.