Dart 将setState与无状态小部件一起使用

Dart 将setState与无状态小部件一起使用,dart,flutter,Dart,Flutter,有没有一种方法可以将setState与无状态小部件一起使用? 我知道我可以与StatefulWidget一起使用,也可以使用状态,但我不知道是否有办法将其与无状态Widget一起使用 我认为这是一个直接的问题,不需要显示代码 如果您能帮助我,我将不胜感激。不。这就是无状态widget的全部要点:它没有状态 只有StatefulWidget有一个状态,因此只有它有一个setState下面是一个代码示例,它使无状态widget能够自我更新,它来自Didier Boelens的一篇文章 " 以下无用

有没有一种方法可以将setState与无状态小部件一起使用? 我知道我可以与StatefulWidget一起使用,也可以使用状态,但我不知道是否有办法将其与无状态Widget一起使用

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


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

不。这就是无状态widget的全部要点:它没有状态


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

下面是一个代码示例,它使无状态widget能够自我更新,它来自Didier Boelens的一篇文章

" 以下无用的代码使得无状态小部件可以通过使用BuildContext来更新自身(就好像它是StatefulWidget,但不使用任何setState())

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()


应该是公认的答案,并设置为不好的做法