установить против обычного назначения в виджете с состоянием - PullRequest
0 голосов
/ 27 января 2019

Я занимаюсь разработкой виджета с отслеживанием состояния и еще не понял разницу между использованием 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";
});

Я имею в виду, что в обоих случаях текст получает новое значение.

...