[flutter] 플러터에서 useEffect 훅(hook)을 사용한 동적 데이터 불러오기 예제

Flutter에서는 useEffect 훅을 사용하여 위젯이나 페이지가 렌더링될 때 동적으로 데이터를 가져와야 하는 경우에 유용하게 활용할 수 있습니다. 이를테면 API 호출, 데이터베이스 연동 등이 있습니다.

이 예제에서는 useEffect 훅을 사용하여 Flutter 앱에서 API를 호출하여 동적 데이터를 불러오는 방법을 살펴보겠습니다.

useEffect 훅이란?

useEffect 훅은 함수형 컴포넌트에서 부작용(예: 데이터 가져오기, 구독 설정, 수동으로 수행하는 DOM 변이 등)을 수행할 수 있도록 도와주는 React 훅입니다. Flutter에서는 이를 이용하여 앱의 상태 변화나 렌더링 사이에 비동기 동작을 수행할 수 있습니다.

예제 코드

먼저, use_effect_example.dart 파일을 생성하고 다음과 같이 코드를 작성합니다.

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('useEffect Example'),
        ),
        body: Center(
          child: useEffectExample(),
        ),
      ),
    );
  }
}

class useEffectExample extends StatefulWidget {
  @override
  _useEffectExampleState createState() => _useEffectExampleState();
}

class _useEffectExampleState extends State<useEffectExample> {
  List<dynamic> data = [];

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

  void _getData() async {
    final response = await http.get(Uri.parse('https://jsonplaceholder.typicode.com/posts'));
    if (response.statusCode == 200) {
      setState(() {
        data = json.decode(response.body);
      });
    } else {
      throw Exception('Failed to load data');
    }
  }

  @override
  Widget build(BuildContext context) {
    return ListView.builder(
      itemCount: data.length,
      itemBuilder: (context, index) {
        return ListTile(
          title: Text(data[index]['title']),
          subtitle: Text(data[index]['body']),
        );
      },
    );
  }
}

위의 코드는 http 패키지를 사용하여 https://jsonplaceholder.typicode.com/posts API에서 데이터를 가져와 ListView에 표시하는 간단한 Flutter 앱 예제입니다.

이제 main.dart 파일에서 useEffectExample 위젯을 호출하여 앱을 실행하면 useEffect를 사용하여 API에서 데이터를 가져와서 화면에 표시하는 앱을 확인할 수 있습니다.

결론

Flutter에서의 useEffect 훅을 사용하여 동적 데이터를 불러오는 방법에 대한 예제를 살펴보았습니다. 이를 통해 앱의 초기 로딩 시나 렌더링 과정에서 비동기 동작을 수행하고 데이터를 효율적으로 관리하는 방법을 익힐 수 있습니다.

위의 코드를 활용하여 나만의 Flutter 앱을 개발해보세요!

참고 자료