【问题标题】:Flutter setState inside an inner WidgetFlutter setState 在内部 Widget 中
【发布时间】:2019-01-19 06:18:41
【问题描述】:

是否可以在 statefulls 内部小部件内(在主上下文之外)使用 setState

我想要实现的是当用户点击它时让Button 更改color。它在 ListView.builder 内,因为有多个按钮,但我希​​望它只发生在 _buildAnsers 小部件中

Widget _buildAnswers(int questionIndex) {

    //I need this to be inside this widget
    Color _buttonColor = Colors.red;

    return new ListView.builder(
      itemCount: 10,
      physics: ClampingScrollPhysics(),
      shrinkWrap: true,
      itemBuilder: (context, answerIndex) {

        return Padding(
            child: new RaisedButton(
              onPressed: () {
                setState(() {
                  _buttonColor = Colors.green; //this doesn't work?
                });
              },

              color: _buttonColor,
              splashColor: Color(0xFFde1f28),
              disabledColor: Color(0xFFc54b51),

              child: new Text('Container ${answerIndex}'),
            )
        );

      },
    );

  }

【问题讨论】:

  • 你想只改变一个按钮的颜色吗?
  • 来自 ListView.builder 的倍数。我最终只是在外面制作了一个List 并将所有属性放在那里并使用列表来更改颜色

标签: dart widget flutter stateful


【解决方案1】:

不,它不会起作用,更好的选择是使用StreamController 和广播/订阅模型。

【讨论】:

  • 我如何使用我现在拥有的东西来完成这项工作?我对StreamControllers不太熟悉
猜你喜欢
  • 2022-08-04
  • 2021-07-12
  • 1970-01-01
  • 2019-07-05
  • 2021-11-11
  • 2018-07-28
  • 1970-01-01
  • 1970-01-01
  • 2023-01-02
相关资源
最近更新 更多