[flutter] shared_preferences 를 사용하여 사용자의 최근 연락한 사람 목록을 저장하는 방법은 무엇인가요?

이번 포스트에서는 Flutter 앱에서 사용자의 최근 연락한 사람 목록을 저장하는 방법에 대해 알아보겠습니다. 이를 위해 shared_preferences 라이브러리를 사용할 것입니다. shared_preferences는 Flutter 애플리케이션에서 간단한 key-value 쌍 데이터를 영구적으로 저장하기 위한 방법을 제공합니다.

1. shared_preferences 라이브러리 추가하기

먼저, shared_preferences 라이브러리를 사용하기 위해 pubspec.yaml 파일에 다음과 같이 의존성을 추가합니다:

dependencies:
  flutter:
    sdk: flutter
  shared_preferences: ^2.0.8

의존성을 추가한 후, 터미널에서 flutter pub get 명령어를 실행하여 변경 사항을 적용합니다.

2. 최근 연락한 사람 목록 저장하기

이제 shared_preferences를 사용하여 최근 연락한 사람 목록을 저장하는 방법을 알아보겠습니다. 다음은 예시 코드입니다:

import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';

class RecentContactsPage extends StatefulWidget {
  @override
  _RecentContactsPageState createState() => _RecentContactsPageState();
}

class _RecentContactsPageState extends State<RecentContactsPage> {
  List<String> recentContacts = [];

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

  Future<void> _loadRecentContacts() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    List<String>? contacts = prefs.getStringList('recentContacts');
    if (contacts != null) {
      setState(() {
        recentContacts = contacts;
      });
    }
  }

  Future<void> _saveRecentContacts() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    await prefs.setStringList('recentContacts', recentContacts);
  }

  void _addRecentContact(String contact) {
    setState(() {
      recentContacts.insert(0, contact);
      if (recentContacts.length > 10) {
        recentContacts.removeLast();
      }
    });
    _saveRecentContacts();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Recent Contacts'),
      ),
      body: ListView.builder(
        itemCount: recentContacts.length,
        itemBuilder: (context, index) {
          return ListTile(
            title: Text(recentContacts[index]),
          );
        },
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () {
          _addRecentContact('New Contact');
        },
        child: Icon(Icons.person_add),
      ),
    );
  }
}

위의 코드는 Stateful 위젯인 RecentContactsPage를 정의합니다. recentContacts 리스트는 최근 연락한 사람들을 저장하고, _loadRecentContacts() 함수는 저장된 목록을 로드합니다. _saveRecentContacts() 함수는 최근 연락한 사람 목록을 저장하며, _addRecentContact() 함수는 새로운 연락처를 추가합니다.

3. 최근 연락한 사람 목록 화면에 출력하기

위의 코드에서 RecentContactsPage를 화면에 출력하기 위해 다른 위젯에서 RecentContactsPage를 호출하면 됩니다. 예를 들어 main.dart 파일에서 다음과 같이 RecentContactsPage를 사용할 수 있습니다:

import 'package:flutter/material.dart';

import 'recent_contacts_page.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: RecentContactsPage(),
    );
  }
}

이제 앱을 실행하면 최근 연락한 사람 목록이 표시되고, 새로운 연락처를 추가할 때마다 목록이 업데이트됩니다.

이상으로 Flutter 앱에서 shared_preferences 라이브러리를 사용하여 최근 연락한 사람 목록을 저장하는 방법에 대해 알아보았습니다. shared_preferences를 사용하면 간단하게 데이터를 저장하고 로드할 수 있습니다. 앱의 특정 기능에 적용할 수 있는 다른 데이터 저장 기술도 찾아보세요.