오늘은 가장 어렵다고 생각되는 부분을 학습했다.
compose 공부할 때부터 이해가 잘 안되었던 context 부분이다.
compose를 공부할 당시, context의 정의에 대해서 공부를 한 적이 있다.
Toast 메세지와 navigator를 사용할 때 이게 대체 뭐길래 여기에 들어가는 건지 궁금했었다.
ai와 열심히 학습한 결과, "그 시점의 상황을 담은 것" 정도밖에 이해가 되지 않았다.
Widget build(BuildContext context){}
flutter의 Widget 부분을 보면 build 메서드 뒤에 항상 오는 파라미터가 보인다.
flutter는 compose와 다르게 Widget Tree라는 틀 안에서 움직이기에 조금 더 쉽게 이해할 수 있었다.
작성 시점의 Widget과 부모, 조상 Widget의 관계를 이어주는 상대적인 역할은 한다.
즉, 해당 Widget이 Widget Tree 내에서 어디에 위치하고 있는지를 알 수 있다.
const YeonggwangPage({super.key});
위 코드 역시 Widget을 상속받는 class를 선언할때마다 계속 보였다.
abstract class Widget extends DiagnosticableTree {
/// Initializes [key] for subclasses.
const Widget({this.key});
final Key? key;
super 키워드는 부모 클래스의 속성과 관련이 있으므로 StatefulWidget -> Widget을 찾아봤다.
Key nullable 타입의 key라는 변수를 볼 수 있었다.

Gemini에게 이 Key타입에 대해 물어보니 다음과 같은 답변을 얻을 수 있었다.
Key는 ID처럼 해당 Widget을 식별하기 위해 사용하며, flutter가 해당 위젯을 기억하여 메모리 사용 효율이 증가한다는 이점이 있다.
지금 당장은 사용할 일이 없을 것 같지만, 추후에 채팅방 목록이나 우선순위를 주어야 할 부분이 있다면 Key로 간단하게 구분할 수 있을 것 같다.
이 부분은 더 공부한 뒤 ui 구현에 익숙해지면 사용해봐야겠다.