랜덤 숫자 생성 어플 실습 중에 "생성하기"버튼을 눌러도 숫자가 생성되지 않는 문제가 발생함
_Footer(
onPressed: () {
final rand = Random();
final Set<int> newNumbers = {};
final randomNumber = rand.nextInt(1000);
while(newNumbers.length<3){
newNumbers.add(randomNumber);
}
setState(() {
numbers = newNumbers.toList();
});
},
),
onPressed: () {
final rand = Random();
final Set<int> newNumbers = {};
// Set에 3개의 랜덤 숫자가 추가될 때까지 반복
while (newNumbers.length < 3) {
final randomNumber = rand.nextInt(1000); // 이 부분을 반복문 안으로 이동
newNumbers.add(randomNumber); // 각 랜덤 숫자를 Set에 추가
}
setState(() {
numbers = newNumbers.toList();
});
},
while 함수가 되는 동안 randomNumber도 반복 실행되어 새로운 난수를 생성하도록 한다. → randomNumber를 while 함수 바디 내부로 이동한다.
그러면 새로운 난수가 나올 때 마다 Set에 저장하여 중복없이 3개의 난수가 저장되고 while은 멈추고 다음 코드가 진행된다.
나는 왜 final randomNumber = rand.nextInt(1000)을 적어놓으면 여러번 반복되어 생성될거라 생각했나.
버튼을 누르면 build가 재실행되니까 rand도 재실행 될거라고 생각했다.
이는 매우 문제적인 생각이다.
위의 오류 코드인 상태에서 버튼을 누르면 build가 재실행되다가 말아버리는 것이다. while 함수에서 진행되지 않는것이다.