본문 바로가기
프레임워크/flutter

[Error]the function 'setstate' isn't defined.

by seongjko 2023. 10. 17.
728x90
Widget dialogContent(BuildContext context, String title, String content) {
  TextEditingController _textEditingController = TextEditingController();
  String savedText = '';

  return Container(
    padding: EdgeInsets.all(16.0),
    decoration: BoxDecoration(
      color: Colors.white,
      borderRadius: BorderRadius.circular(10.0),
    ),
    child: Column(
      mainAxisSize: MainAxisSize.min,
      children: <Widget>[
        Text(                                            //설정 제목
          title,
          style: TextStyle(
            fontWeight: FontWeight.bold,
            fontSize: 18.0,
          ),
        ),
        SizedBox(height: 10.0),                          //여백
        TextField(controller: _textEditingController),   //텍스트 입력창
        SizedBox(height: 10.0),                          //여백
        ElevatedButton(                                  //텍스트 저장 버튼
          onPressed: () {
            // setState(() {
              savedText = _textEditingController.text;
              _textEditingController.clear();
            },
          child: Text('저장'),
        ),
        SizedBox(height: 20.0),                           //여백
        ElevatedButton(                                   //창 닫기 버튼
          onPressed: () {
            Navigator.of(context).pop(); // Close the dialog
          },
          child: Text('OK'),
        ),
      ],
    ),
  );
}

setState를 어떻게 하면 쓸 수 있을까 고민했었는데 애초에 statefulWidget에서만 사용할 수 있는 메서드였다.

어찌보면 당연하다.

setState 역할 자체가 UI가 변경되었을 경우 이를 다시 그리라고 시스템에 신호를 건네주는 역할인데 

statefulWidget에서만 쓸 수 있는 것이다.

그리고 애초에 setState를 쓸 필요가 없었다 이 코드에서는.

왜냐하면, ElevatedButton을 누른다고 해서 UI 자체가 변화하지 않기 때문이다.

UI가 변화하는 부분이 있어야 쓸모있는 메서드를 UI가 변화하는 부분이 없는 부분에 사용하려 하고 있었다.

 

반응형