有点Flutter的新手,希望您能为这个问题提供帮助。
我的应用程序主屏幕上有两个小部件。顶部窗口小部件是Facebook横幅广告窗口小部件,然后在屏幕底部显示从Web API调用中填充的列表。
当我使用工具栏从API刷新数据时,我正在使用SetState重建列表等。
但是,每次都重新构建带有Facebook广告的顶部小部件,这不是我想要的。
我已经看到了很多有关Bloc Patterns的话题。如果听起来我想做的事有些过大,有没有更简单的方法来更新列表而不更新横幅广告窗口小部件?
谢谢
答案 0 :(得分:0)
您应该在小部件中添加一个key属性,它使您可以在更改状态时避免重建特定的小部件。
答案 1 :(得分:0)
我可以想到两种解决方案:
class _MyWidgetState extends State<MyWidget> {
Widget _facebookBanner;
@override
void initState() {
_facebookBanner = ...;
super.initState();
}
@override
Widget build(BuildContext context) {
return Column(children: <Widget>[
_facebookBanner,
ListView(...),
]);
}
}
答案 2 :(得分:0)
您可以将Facebook标语定义为const
,这样声明后就不会重建
这是一个如何使用const
关键字的示例
child: const Text('This is just an example of a const widget');
const构造函数是对您知道不会改变的东西的绝佳优化。