首页 > 解决方案 > Flutter setState() 方法调用

问题描述

由于我是 Flutter 的新开发人员,我很困惑何时应该调用 setState() ?,如果我调用整个应用程序是在 build() 中重新加载(重绘视图)。我想更新树形小部件结构中的一个 TextView 小部件值

标签: androidflutter

解决方案


这是示例。点击你只重新创建的工厂_MyTextWidget

StreamController<int> _controller = StreamController<int>.broadcast();
int _seconds = 1;

Widget build(BuildContext context) {  
  return Scaffold(
    body: Container(
              color: Colors.cyan.withOpacity(0.3),
              width: 300.0,
              height: 200.0,
              child: _MyTextWidget(_controller.stream)),
            ),
    floatingActionButton: FloatingActionButton(
      onPressed: () {
        _controller.add(_seconds++);
      },
      child: Icon(Icons.add),
    ),
  );
}
...

class _MyTextWidget extends StatefulWidget {
  _MyTextWidget(this.stream);

  final Stream<int> stream;

  @override
  State<StatefulWidget> createState() => _MyTextWidgetState();
}

class _MyTextWidgetState extends State<_MyTextWidget> {
  int secondsToDisplay = 0;

  @override
  Widget build(BuildContext context) {
    return StreamBuilder(
        stream: widget.stream,
        builder: (BuildContext context, AsyncSnapshot<int> snapshot) {
          return snapshot.hasData ? Text(snapshot.data.toString()) : Text('nodata');
        });
  }
}

推荐阅读