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가 변화하는 부분이 없는 부분에 사용하려 하고 있었다.
반응형
'프레임워크 > flutter' 카테고리의 다른 글
[뻘짓]dialog: stateless? stateful? (0) | 2023.10.19 |
---|---|
[개념]statelessWidget vs statefulWidget (0) | 2023.10.17 |
[Error]Execution failed for task ':image_picker_android:parseDebugLocalResources'. (0) | 2023.10.16 |
build.gradle (0) | 2023.10.14 |
[Error] No MaterialLocalizations found - MyApp widgets require MaterialLocalizations to be provided by a Localizations widget ancestor (0) | 2023.10.09 |