Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android SwiftUI ObservieObject+@出版的《颤振》杂志_Android_Flutter_State_Swiftui - Fatal编程技术网

Android SwiftUI ObservieObject+@出版的《颤振》杂志

Android SwiftUI ObservieObject+@出版的《颤振》杂志,android,flutter,state,swiftui,Android,Flutter,State,Swiftui,我在SwiftUI中开发了一个iOS应用程序,现在需要将其移植到Android上,并决定尝试使用Flitter。在克服了超级冗长和/或丑陋的嵌套小部件之后,我陷入了状态管理。在SwiftUI中: class MySharedObj : ObservableObject { @Published var someVar = 0 } 现在我可以简单地在任何视图中删除“@ObservedObject var obj:MySharedObj”,并且每当someVar在任何地方发生更改时,所有“观察

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

class MySharedObj : ObservableObject {
  @Published var someVar = 0
}
现在我可以简单地在任何视图中删除“@ObservedObject var obj:MySharedObj”,并且每当someVar在任何地方发生更改时,所有“观察”该对象的视图都会自动更新。在颤振中是否有类似的东西?目前,我手动管理“侦听器”列表,如下所示:

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();}
}
...
类observeObject{
列表_侦听器=[];
observeObject subscribe(State-State){u侦听器。添加(State);返回(this);}
ObserveObject取消订阅(状态状态){u侦听器。删除(状态);返回(此);}
observeObject notify(){u listeners.forEach((l)=>l.setState((){}));返回(this);}
}
类MySharedObj:observeObject{
int _someVar=0;
int get someVar=>\u someVar;
void set someVar(int v){u someVar=v;notify();}
}
类SomeView1State扩展状态{
@重写initState(){widget.obj.subscribe(this);super.initState();}
@override dispose(){widget.obj.unsubscribe(this);super.dispose();}
}
...

这类工作,但它的丑陋和再次冗长(这似乎是安卓的主题)

我想您应该看看提供商软件包。关于这件事有很多讨论