커뮤니티
포인트
쿠폰
내 강의실
국비 신청 내역
증명서
계정
로그아웃
학습 질문
개발 일지
나의 활동
답변 완료
2주차 숙제관련.
앱개발 종합반 - 플러터 v8
2주차
북마크
김*범
댓글
4
추천
0
조회수
37
조회수
37
답변 완료

* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.

* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.





2 주차 숙제 답안에 오류가 있는 듯 합니다.

답안으로 나와있는 코드에서, 55번째 줄과 59번째 줄에 나오는

DefaultTabController.of(context)?.index==1

요 부분, 에러가 발생합니다.




TabController 의 ancester 값이 존재 하지 않기 때문에 of()? 를 사용 하게 되면 오류가 발생하는 듯 합니다.



스파르타 즉문즉답

요건 of()? 로 실행 했을 때의 화면인데, ancester 를 찾을 수 없다고 나오며 에러 화면 이 뜹니다.

스파르타 즉문즉답

또한 vscode 에서는 이것은 null 이 될 수 없기 때문에 of() 뒤에 ? 를 붙이는 것이 의미가 없다고 나옵니다.


of()뒤에 ! 를 붙여서 null 값이 아닐 거라고 확정을 지어보아도 실제로 null 이 올 수 밖에 없어서 역시 에러가 발생합니다.




결론적으론, maybeOf()? 를 사용하여 null 값을 반환 할 수 있도록 해야 하는 거 같은데,

제가 놓친 부분이 있다면 설명 부탁 드리겠습니다.



  • maybeOf()? 로 바꾼 뒤에는 잘 실행이 됩니다.







작성한 코드 및 에러 메세지

오류 발생 시, 작성한 코드 전체와 에러 메시지를 첨부해 주세요.

Tip 1) </> 아이콘을 눌러 코드박스를 만들어 보세요.

Tip 2) Ctrl+A(맥의 경우 Command+A) 단축키로 코드를 한 번에 선택할 수 있어요!

Widget build(BuildContext context) {
    return DefaultTabController(
      initialIndex: 1,
      length: 3,
      child: Scaffold(
        body: Stack(
          children: [
            TabBarView(
              children: [
                FirstTab(),
                SecondTab(),
                ThirdTab(),
              ],
            ),
            SafeArea(
              child: Padding(
                padding:
                    const EdgeInsets.symmetric(vertical: 20, horizontal: 16),
                child: Column(
                  children: [
                    Container(
                      alignment: Alignment.topCenter,
                      child: TabPageSelector(
                        color: DefaultTabController.maybeOf(context)?.index == 1
                            ? Colors.blue[300]
                            : Colors.grey[400],
                        selectedColor:
                            DefaultTabController.maybeOf(context)?.index == 1
                                ? Colors.white
                                : Colors.blue,
                        indicatorSize: 8,
                      ),
                    ),
                  ],
                ),
              ),
            ),
          ],
        ),
      ),
    );
  }



취소
 공유
취소
댓글 0
댓글 알림
나의얼굴