현재 날짜의 텍스트 위젯과 현재 시간의 텍스트 위젯을 구현해야 되는 상황이 왔다.
날짜는 업데이트가 필요없지만 (23시 -> 0시 고려 불필요) 시간은 초단위로 변경되어야 하는 상황이었다.
// 시간은 initState때 Timer를 이용하여 1초 마다 한번씩 렌더링을 진행시킨다.
@override
void initState() {
controller = GifController(vsync: this);
Timer.periodic(const Duration(seconds: 1), (Timer timer) {
setState(() {
final now = DateTime.now().toLocal();
final formattedTime = DateFormat('HH:mm:ss').format(now);
currentTime = formattedTime;
});
});
super.initState();
}
@override
Widget build(BuildContext context) {
final now = DateTime.now();
final formattedDate = DateFormat('yyyy년 MM월 dd일').format(now);
...
// 시간은 실행 시 한번 세팅하고 변동없이 보이게 할 예정이다.
여기서 toLocal은 기기가 실행된 로컬 시간에 맞게 표기되는 걸 도와준다.
구현 완료 및 정상동작 확인. 그런데 무언가 이상했다. 분명 Row 위젯으로 배치했는데 두 텍스트 위젯의 위치가 다른 것이었다. 이에 대한 내용은 다음 포스팅에서 진행하도록 한다.
'Personal Posting > Flutter' 카테고리의 다른 글
Android 앱화면 상태바 가리기 (0) | 2023.09.21 |
---|---|
RichText를 이용한 텍스트 관리 (0) | 2023.09.21 |
위젯 겹치게 배치하기 (0) | 2023.09.21 |
assets에 외부 파일 등록 후 접근 (0) | 2023.07.27 |
Dart for Flutter - 시작 (0) | 2023.04.18 |