• 카테고리

    질문 & 답변
  • 세부 분야

    모바일 앱 개발

  • 해결 여부

    미해결

코드정리

23.08.24 15:25 작성 조회수 203

0

AppBar 위젯 코드를 정리하실 때, stless위젯을 따로 만들지 않고 함수로 가져오셨는데 위젯을 함수로 가져올지 Expnade 위젯처럼 stless위젯으로 가져오는지 어떤 기준으로 나뉘는건가요?

class AppBar extends StatelessWidget {
  const AppBar({super.key});

  @override
  Widget build(BuildContext context) {
    return AppBar(
      title: Text(
        "App name",
        style: TextStyle(
          color: Colors.blueAccent,
        ),
      ),
      backgroundColor: Colors.white,
    );
  }
}

또한 AppBar를 Stless 위젯으로 만들어보려고 했을때 title 부분과 backgroundColor 부분에서 오류가 나는데 그 이유도 알 수 있을까요?

답변 1

답변을 작성해보세요.

1

안녕하세요!

모든 오류는 어떤 오류가 나는지 안 알려주시면 답변을 드릴 수 없습니다.

'오류가 나요'는 '요리 했는데 맛이 없어요'랑 똑같습니다. 과정과 어떤 오류가 나는지 알려주셔야 제가 도움을 드릴 수 있습니다.

위젯을 새로 만들면 새로운 위젯의 라이프 사이클을 생성하게 됩니다. 화면에 그리려는 요소들이 서로 다른 라이프 사이클을 갖고 효율적으로 렌더링 할 수 있게 된다면 나누는게 조금 더 효율적입니다.

하지만 함수로 빼게되면 함수가 속한 위젯의 라이프사이클에 종속됩니다. 그래서 단순히 코드 정리하는 정도만 된다고 생각하시면 됩니다.

또한, AppBar의 경우 그냥 위젯이 아니라 PreferredSizeWidget입니다 (정의로 가기 해보세요). 그렇기 때문에 단순히 StatelessWidget으로 구현이 불가능합니다. OOP에서 배우셨던 것 처럼 PreferredSizeWidget의 모든 요소를 implement 하지 않으면 주입이 불가능합니다.

감사합니다!