SwiftUI ObservableObject + @Published在flutter中

时间:2019-11-20 20:33:55

标签: android flutter state swiftui

我在SwiftUI中开发了一个iOS应用,现在需要将其移植到Android,并决定尝试Flutter。在克服了超级冗长和/或丑陋的嵌套小部件之后,我陷入了状态管理的困境。在SwiftUI中:

class MySharedObj : ObservableObject {
  @Published var someVar = 0
}

现在,我可以在ANY视图中简单地添加“ @ObservedObject var obj:MySharedObj”,并且无论何时更改someVar,所有“观察”该对象的视图都会自动更新。 Flutter中有等同的功能吗?目前,我手动管理“侦听器”列表,如下所示:

class ObservableObject { 
  List<State> _listeners = [];
  ObservableObject subscribe(State state) { _listeners.add(state); return(this); }
  ObservableObject unsubscribe(State state) { _listeners.remove(state); return(this); }
  ObservableObject notify() { _listeners.forEach((l) => l.setState((){})); return(this); }
}
class MySharedObj : ObservableObject {
  int _someVar = 0;
  int get someVar => _someVar;
  void set someVar(int v) { _someVar = v; notify(); }
}

class SomeView1State extends State<SomeView1> {
  @override initState(){widget.obj.subscribe(this);super.initState();}
  @override dispose(){widget.obj.unsubscribe(this);super.dispose();}
}
...

这类作品,但又丑陋又冗长(似乎是Android的主题)。

0 个答案:

没有答案