캘린더 일정관리 앱 #6

이전에 텍스트필드를 텍스트폼필드로 바꿔 구현해주었다
-> Form 위젯 사용으로 통합관리에 유용하도록!
Form 위젯은 key 매개변수에 GlobalKey 값을 넣어주면 된다
Form 조작시에는 같은 key를 사용해 Form 내부의 TextFormField를 일괄 조작한다

텍스트필드 위젯
null 리턴되면 에러가 없다는 것이고
만약 에러가 있으면 에러를 String 값으로 반환해준다
입력된 값이 없으면 값을 넣어달라는 문자가 반환된다
입력된 시간 값이 0보다 작으면 0보다 큰 숫자를 넣어달라는 문자가 반환된다
입력된 시간 값이 24보다 크면 24보다 작은 값을 넣어달라는 문자가 반환된다



각 텍스트필드에 값을 제대로 입력하고 save 버튼을 누르면 위처럼 잘 동작한다

https://pub.dev/packages/get_it
get_it | Dart Package
Simple direct Service Locator that allows to decouple the interface from a concrete implementation and to access the concrete implementation from everywhere in your App"
pub.dev
get_it 패키지 import해 GetIt class 사용한다
GetIt class 사용해 어디에서든 database를 가져올 수 있다


데이터베이스 연동해 가져온 색상 보여주기



각 색깔 누르면 선택된 색에 테두리 표시하기
// 데이터가 있고 한번도 값이 세팅된 적이 없고
// 최소한 하나의 값이 snapshot.data에 들어있다면
if (snapshot.hasData &&
selectedColorId == null &&
snapshot.data!.isNotEmpty) {
selectedColorId = snapshot.data![0].id; //첫번째 색이 디폴트

에러 없으면 스케줄 생성,
일정 작성 후 bottom sheet 닫기
Tip!
import 'package:drift/drift.dart' show Value;
만약 불러오는 패키지끼리 동일한 클래스 이름이 있어 겹친다면
위 예시처럼 drift.dart 패키지에서는 Value만 가져온다
이런 식으로 사용하면 된다

get() 하면 List로 Future를 받을 수 있고(단발적: 요청시 한 번 받는 것)
watch() 하면 Stream으로 값들이 업데이트 됐을 때 지속적으로 업데이트된 값 받을 수 있음



저장한 값을 잘 출력해준다