我正在开发一个有状态的小部件,但我还不了解使用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";
});
我的意思是,在两种情况下,文本都获得了新的价值。