
* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.
* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.
2 주차 숙제 답안에 오류가 있는 듯 합니다.
답안으로 나와있는 코드에서, 55번째 줄과 59번째 줄에 나오는
DefaultTabController.of(context)?.index==1
요 부분, 에러가 발생합니다.
TabController 의 ancester 값이 존재 하지 않기 때문에 of()? 를 사용 하게 되면 오류가 발생하는 듯 합니다.

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

또한 vscode 에서는 이것은 null 이 될 수 없기 때문에 of() 뒤에 ? 를 붙이는 것이 의미가 없다고 나옵니다.
of()뒤에 ! 를 붙여서 null 값이 아닐 거라고 확정을 지어보아도 실제로 null 이 올 수 밖에 없어서 역시 에러가 발생합니다.
결론적으론, maybeOf()? 를 사용하여 null 값을 반환 할 수 있도록 해야 하는 거 같은데,
제가 놓친 부분이 있다면 설명 부탁 드리겠습니다.
작성한 코드 및 에러 메세지
오류 발생 시, 작성한 코드 전체와 에러 메시지를 첨부해 주세요.
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,
),
),
],
),
),
),
],
),
),
);
}
