Я занимаюсь разработкой виджета с отслеживанием состояния и еще не понял разницу между использованием setState
и обычным назначением переменной.
Это код, который я использую:
import ...
class MyWidget extends StatefulWidget {
@override
_MyWidgetState createState() => _MyWidgetState();
}
class _MyWidgetState extends State<MyWidget> {
String _state_var;
@override
void initState() {
super.initState();
setState(() {
_state_var = "test";
});
}
@override
Widget build(BuildContext context) {
return StoreConnector<AppState, AppState>(
converter: (store) => store.state,
builder: (context, appState) {
return Scaffold(
appBar: AppBar(
title: Text("TITLE"),
),
body: Container(
padding: EdgeInsets.all(10.0),
child: ListView(
children: [
Text(_state_var),
Center(
child: FlatButton(
child: Text('CHANGE VALUE'),
onPressed: () async {
_state_var = "SND TEST";
// OR
setState(() {
_state_var = "SND TEST";
});
},
),
),
])
),
);
},
);
}
}
Какая разница между:
_state_var = "SND TEST";
и
setState(() {
_state_var = "SND TEST";
});
Я имею в виду, что в обоих случаях текст получает новое значение.