인프런 커뮤니티 질문&답변

이진희[학생](예술디자인대학 님의 프로필 이미지
이진희[학생](예술디자인대학

작성한 질문수

플러터와 장고로 1시간만에 퀴즈 앱/서버 만들기 [무작정 풀스택]

퀴즈 모델 만들고 퀴즈 풀기 화면 만들기

class 선언 오류

작성

·

1.8K

0

///widget_candidate.dart 파일///
class CandWidget extends StatefulWidget {
  VoidCallback tap;
  String text;
  int index;
  double width;
  bool answerState;

  CandWidget({this.tap, this.text, this.index, this.width, this.answerState});
  _CandWidgetState createState() => _CandWidgetState();
}
///screen_quiz.dart 파일///
class QuizScreen extends StatefulWidget {
  List<Quiz> quizs;
  QuizScreen({this.quizs});

  @override
  _QuizScreenState createState() => _QuizScreenState();
}
각 class CandWidget, QuizScreen 가 이렇게 오류가 뜹니다.ㅠㅠ
This class (or a class that this class inherits from) is marked as '@immutable', but one or more of its instance fields aren't final: CandWidget.tap, CandWidget.text, CandWidget.index, CandWidget.width, CandWidget.answerStatedartmust_be_immutable

답변 3

0

권태뽕님의 프로필 이미지
권태뽕
지식공유자

넵 안녕하세요! 해당부분은 final로 선언했는데 밑에서 값을 변경해서 그렇습니다. 이건 제가 final로 선언하지 않고 만들어서 그렇게 된 것인데, 로직을 많이 변경해야해서 당장 바로 답변 드리기 어렵습니다ㅠㅠ 추후에 전체 공지 및 업데이트를 통해 개선된 코드 공유드리겠습니다. 감사합니다:)

0

답변 감사드립니다!

class CandWidget extends StatefulWidget {
  final VoidCallback tap;
  final String text;
  final int index;
  final double width;
  final bool answerState;

  CandWidget({this.tap, this.text, this.index, this.width, this.answerState});
  _CandWidgetState createState() => _CandWidgetState();
}
final을 붙여줄 경우 bool에 한해서 이러한 에러가 나옵니다ㅠㅠㅠ

0

권태뽕님의 프로필 이미지
권태뽕
지식공유자

안녕하세요! 강의 들어주셔서 감사합니다:)

본 이슈는 클래스 선언 시 변수를 final로 선언하지 않아 발생한 것인데, 제가 했을 땐 에러보단 경고가 나왔었는데 에러가 발생하셨군요..!

클래스 내부에 선언한 변수들에 대해 final List quizs; 와 같은 방식으로 앞에 final을 붙이면 해결될 것 같습니다.

final을 붙이는 것은 클래스 내부의 변수를 수정할 수 없게끔 만드는 것이며 이렇게 하면 클래스로 인스턴스를 생성할 때에만 변수에 값을 넣을 수 있습니다.

감사합니다:)

이진희[학생](예술디자인대학 님의 프로필 이미지
이진희[학생](예술디자인대학

작성한 질문수

질문하기