앱 권한
연락처를 보고 싶다면 허락을 받아야 함.
(갤러리/ 위치 등도 허락 받아야 함)
허락받으려면 패키지를 다운받아야 함.
# 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 타입, 그 안의 타입까지 지정 됨.
타입이 다를 때
- 타입캐스팅
- 유니온타입
- 변수를 다이나믹 타입으로 변경
예를들어
var name = [];
이렇게하면 정해진게 없으니 여러가지 넣어도 됨. 미리 타입을 강제할 수도 있음.
List<Contact> name = [];