오늘한일

플러터 1/4/7/14 앱

과목 생성 기능 추가 (배경색 선택 가능)

대충 db 사용법을 알았으니 생성 기능을 추가하는 것은 어렵지 않았다. 배경색은 flutter_colorpicker라는 좋은 패키지가 있다.

create(String text, Color color) async {
    List<Subject> subjects = await findAll();
    var subject = Subject.temp2(text, color.value, [], subjects.length);
    await _store.add(_db, subject.toJson());
}

// 위젯 텍스트필드 onEditingComplete
var text = _nameForCreateController.text;
if (text.isEmpty) {
  _focusNodeOfNameForCreate.unfocus();
  return;
}

var db = await SubjectDatabase().get();
await db.create(text, _currentColor);

setState(() {
  this._subjectsFuture = findAll();
});

_onClearName();
_focusNodeOfNameForCreate.unfocus();

배경색의 밝기에 따라 글자색 white or black 표시

이 부분이 조금 애매했다. 글자색을 white로 통일하고 싶었으나, 배경색이 너무 밝으면 글자색이 안보인다. 처음엔 보색이라고 생각해서 'complementary color in flutter' 키워드로 검색해보니 패키지가 있긴 했다. 하지만 complementary는 내가 생각한 개념이 아니었다.

'white, black, depending on background color' 키워드를 조합해서 검색했다. 겨우겨우 stackoverflow의 'How to decide font color in white or black depending on background color?' 를 발견했다.

Color get textColor {
  Color color = this.color;
  if (color.red * 0.299 + color.green * 0.587 + color.blue * 0.114 > 186) {
    return Colors.black;
  }
  
  return Colors.white;
}

이제 어느정도 감을 잡은 것 같다.

오늘 느낀점

카카오톡 앱 개발 오픈채팅방에서 가끔 플러터 관련해서 대화를 나누는데, 아직 플러터는 래퍼런스가 부족하여 리액트 네이티브보다 꺼려진다고 한다. 계속 발전하고 관련 래퍼런스와 라이브러리가 누적되면 크로스플랫폼 3세대의 주류가 될 수 있지 않을까. (워낙 플러터 진영에서 성능으로 자랑을 하니까)

내일 할일

  • 플러터 1/4/7/14 앱: 과목 상세정보 화면
    • 과목명 변경
    • 과목 삭제
  • JSciprt.net 유지보수 알바 미팅
  • 백준 DP 2문제 풀이