앱 권한

연락처를 보고 싶다면 허락을 받아야 함.

(갤러리/ 위치 등도 허락 받아야 함)

허락받으려면 패키지를 다운받아야 함.

# pubspec.yaml 파일> dependencies 추가
  permission_handler: ^8.3.0

옆의 전구버튼 : pub get 눌러야 함

main.dart 에서

import 'package:permission_handler/permission_handler.dart'
1. Android 폴더의 gradle.properties 파일
android.useAndroidX=true
android.enableJetifier=true

되어있는지 확인할 것

2. android/app/build.gradle

31로 넣어야하는데, 그냥 문자로 넣어져있으면 상관 없다고 함.

android {
    compileSdkVersion flutter.compileSdkVersion
3. android/app/src/main/AndroidManifest
<!-- 두번째 줄 추가 -->
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />

ios의 경우는 따로 정리
main.dart에 권한 관련 코드 추가
  getPermission() async{
    var status = await Permission.contacts.status;
    if(status.isGranted){
      print('허락됨');
    } else if(status.isDenied){
      print('거절됨');
      Permission.contacts.request(); //허락해달라고 팝업창 띄우기
      openAppSettings(); //앱 설정화면 켜줌
    }
  }

앱 시작할 때 실행


    @override
  void initState(){ // 앱 시작할 때 실행할 수 있음
    super.initState();
    getPermission();
  }

그거 말고 뭐 눌렀을 때 실행하고 싶으면 버튼 onpress 안에다 넣으면 됨

연락처 꺼내기

pubspec.yaml
  contacts_service: ^0.6.3

  pub get

main.dart
  import 'package:contacts_service/contacts_service.dart';

  var contacts = await ContactsService.getContacts();
  print(contacts[0].displayName);

  

위와 같이 하면 연락처 가져올 수 있음.

연락처 추가하기

var newPerson = Contact();
      newPerson.givenName = '민수';
      newPerson.familyName = '김';
      ContactsService.addContact(newPerson);

객체 추가인데 (위와같이) new 키워드 빼도 쓸수 있음 이렇게 하면 김민수 추가 됨을 확인할 수 있음

dart 의 타입

변수를 하나 만들었다. var total = 3; 이라면 total 안에는 문자를 못 넣음.

형을 바꿀 수 없음., 정수만 넣을 수 있음.

list를 넣어주면 list 타입, 그 안의 타입까지 지정 됨.

타입이 다를 때

  1. 타입캐스팅
  2. 유니온타입
  3. 변수를 다이나믹 타입으로 변경 예를들어
     var name = []; 
    

이렇게하면 정해진게 없으니 여러가지 넣어도 됨. 미리 타입을 강제할 수도 있음.

 List<Contact> name = [];