首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在StatelessWidget中使用setState

在StatelessWidget中使用setState
EN

Stack Overflow用户
提问于 2018-08-09 06:02:36
回答 2查看 15.4K关注 0票数 12

有没有办法在StatelessWidget中使用setState?我知道我可以与StatefulWidget和使用状态一起使用,但我不知道是否有一种方法可以与StatelessWidget一起使用。

我认为这是一个直接的问题,它不需要代码来显示。

如果你能帮助我,我将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-09 06:04:56

不是的。这就是StatelessWidget的全部意义所在:它没有状态。

只有StatefulWidget有状态,因此只有它有setState

票数 25
EN

Stack Overflow用户

发布于 2019-11-05 21:37:07

这是一个可以让StatelessWidget自我更新的代码示例,它来自Didier Boelens的一篇文章。

https://www.didierboelens.com/2019/09/flutter-internals/“下面的无用代码使StatelessWidget能够通过使用BuildContext…来更新自身(就像它是一个StatefulWidget,但不使用任何setState())

代码语言:javascript
复制
void main(){
    runApp(MaterialApp(home: TestPage(),));
}

class TestPage extends StatelessWidget {
    // final because a Widget is immutable (remember?)
    final bag = {"first": true};

    @override
    Widget build(BuildContext context){
        return Scaffold(
            appBar: AppBar(title: Text('Stateless ??')),
            body: Container(
                child: Center(
                    child: GestureDetector(
                        child: Container(
                            width: 50.0,`enter code here`
                            height: 50.0,
                            color: bag["first"] ? Colors.red : Colors.blue,
                        ),
                        onTap: (){
                            bag["first"] = !bag["first"];
                            //
                            // This is the trick
                            //
                            (context as Element).markNeedsBuild();
                        }
                    ),
                ),
            ),
        );
    }
}

在我们之间,当您调用setState()方法时,后者最终会做同样的事情:_element.markNeedsBuild()。

票数 21
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51756262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档