dart - 将 setState 与 StatelessWidget 一起使用
问题描述
有没有办法将 setState 与 StatelessWidget 一起使用?我知道我可以与 StatefulWidget 一起使用并使用 State,但我不知道是否有办法将它与 StatelessWidget 一起使用。
我认为这是一个直接的问题,不需要显示代码。
如果你能帮助我,我将不胜感激。
解决方案
这是一个使 StatelessWidget 可以自我更新的代码示例,它来自 Didier Boelens 的一篇文章。
https://www.didierboelens.com/2019/09/flutter-internals/ “以下无用的代码使 StatelessWidget 可以通过使用构建上下文……</p>
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()。
"
推荐阅读
- javascript - HTML 5 画布网格系统框颜色错位
- mongodb - mongodb 聚合框架 $match - $lookup - $project (未能使用 $project 来构建结果)
- azure - 无法向 Azure IoT 中心发送任何内容
- node.js - 如何在 nginx 的 aws elastic beanstalk 中启用 X-Frame_Options
- arm64 - pi4 管理程序,处理 irq
- javascript - 为什么value 属性只接受十六进制颜色?
- r - rms 包:在 Glm 中使用 bootcov 获取效果摘要时出错
- python - 在每一帧的 Trimesh 包中更新几何图形在场景中的位置
- javascript - 为什么 100 >> 100 和 100 >>> 100 在 Javascript 中返回 6?
- javascript - 如何使用Javascript从特定的单个数组中查找所有不重复的组合