Flutter 跨组件局部更新Widget

2024-07-08  本文已影响0人  旺仔_100

一、背景

在做项目的时候遇到一个需求,就是需要在一widget中点击,然后更新几处widget。

二、方案

a、使用InheritWidget,它有两个问题:

b、使用eventbus

能实现解决问题,但是eventbus使用过多,导致代码逻辑混乱,尽量少用

c、使用SharedAppData

作用:向子树共享键值对数据,在更新数据时,通知所有依赖过 key 访问数据的 context 元素更新。

我认为是比较好的方式,它既能跨组建,又能自动更新界面。

三、SharedAppData的使用

在需要的点击的地方setvalue,在需要更新的widget中getValue。

void _onSelectColor(Theme value) {  SharedAppData.setValue<String, Theme?>(context, 'theme', value);}
@override
Widget build(BuildContext context) {
  final Theme theme = SharedAppData.getValue<String, Theme>(context, 'theme', () => Theme);
  return Text(
    "theme = $theme",
    style: TextStyle(color: color,fontWeight: FontWeight.bold),
  );
}
上一篇下一篇

猜你喜欢

热点阅读