有状态窗口小部件中的setstate与正常分配

时间:2019-01-26 22:13:53

标签: dart flutter state stateful

我正在开发一个有状态的小部件,但我还不了解使用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";
});

我的意思是,在两种情况下,文本都获得了新的价值。

0 个答案:

没有答案