flutter

Flutter에서 연락처(contact) 관련

whylite 2024. 1. 5. 08:53

Flutter에서 연락처(contact) 관련 프로그램을 만들려면, 일반적으로 몇 가지 주요 요소들이 필요합니다: 연락처 데이터에 접근하고 관리하는 기능, 연락처를 UI에 표시하는 기능, 그리고 사용자와의 상호작용을 처리하는 기능입니다. 여기에는 연락처를 읽고, 쓰고, 수정하고, 삭제하는 기능이 포함될 수 있습니다. 이를 구현하기 위해 다음 단계를 고려할 수 있습니다.

### 1. 연락처 접근 권한

모바일 기기의 연락처에 접근하려면 사용자의 권한이 필요합니다. `contacts_service`와 `permission_handler` 같은 패키지를 사용하여 이를 구현할 수 있습니다.

### 2. 연락처 읽기 및 표시

연락처를 읽어오고, 이를 리스트 뷰 등의 위젯을 사용하여 화면에 표시합니다.

### 3. 연락처 추가 및 수정

연락처를 추가하거나 수정하기 위한 폼을 제공하고, 이를 처리하는 로직을 구현합니다.

### 4. 연락처 삭제

사용자가 연락처를 삭제할 수 있도록 하고, 이에 대한 처리를 구현합니다.

### 예시 코드

아래는 간단한 연락처 앱의 구성요소를 대략적으로 보여주는 예시 코드입니다.

```dart
import 'package:flutter/material.dart';
import 'package:contacts_service/contacts_service.dart';
import 'package:permission_handler/permission_handler.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Contacts App',
      home: ContactsPage(),
    );
  }
}

class ContactsPage extends StatefulWidget {
  @override
  _ContactsPageState createState() => _ContactsPageState();
}

class _ContactsPageState extends State<ContactsPage> {
  List<Contact> _contacts;

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

  _askPermissions() async {
    if (await Permission.contacts.request().isGranted) {
      // 권한이 승인되면 연락처를 읽습니다.
      var contacts = await ContactsService.getContacts();
      setState(() {
        _contacts = contacts;
      });
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Contacts'),
      ),
      body: _contacts != null
          ? ListView.builder(
              itemCount: _contacts.length,
              itemBuilder: (context, index) {
                Contact contact = _contacts[index];
                return ListTile(
                  title: Text(contact.displayName ?? ''),
                  // 여기에 더 많은 연락처 정보를 추가할 수 있습니다.
                );
              },
            )
          : CircularProgressIndicator(),
    );
  }
}
```

이 코드는 `contacts_service`와 `permission_handler` 패키지를 사용하여 연락처에 접근하고, 이를 리스트로 표시하는 기본적인 기능을 구현합니다. 연락처 추가, 수정, 삭제 등의 기능은 추가적인 UI 및 로직이 필요하며, 이는 앱의 요구사항과 사용자 인터페이스 디자인에 따라 다릅니다.

### 패키지 설치

위 예시에 사용된 패키지를 사용하기 위해서는 `pubspec.yaml` 파일에 다음과 같이 의존성을 추가해야 합니다:

```yaml
dependencies:
  flutter:
    sdk: flutter
  contacts_service: ^0.6.1
  permission_handler: ^8.1.4+2
```

Flutter에서 연락처 관련 앱을 만드는 것은 다양한 기능과 사용자 인터페이스 요소들을 필요로 하며, 위의 예시는 그 기본