Flutter 如何与ChangeNotifer一起使用颤振钩

Flutter 如何与ChangeNotifer一起使用颤振钩,flutter,hook,flutter-change-notifier,Flutter,Hook,Flutter Change Notifier,假设我们有一个带有ChangeNotifer的复杂模型,那么我应该如何在模型更改时自动更新UI 这是我想到的,但看起来很奇怪,是不是有更好的方法 类小部件{ 康斯特游乐场({Key}):超级(Key:Key); @凌驾 小部件构建(构建上下文){ 印刷(“建造”); 最终数据状态=使用状态(数据类(0)); 最终数据=useListenable(dataState.value); 返回脚手架( appBar:appBar( 标题:文本(“标题”), ), 正文:ListView( 儿童:[ 列表

假设我们有一个带有
ChangeNotifer
的复杂模型,那么我应该如何在模型更改时自动更新UI

这是我想到的,但看起来很奇怪,是不是有更好的方法

类小部件{
康斯特游乐场({Key}):超级(Key:Key);
@凌驾
小部件构建(构建上下文){
印刷(“建造”);
最终数据状态=使用状态(数据类(0));
最终数据=useListenable(dataState.value);
返回脚手架(
appBar:appBar(
标题:文本(“标题”),
),
正文:ListView(
儿童:[
列表砖(
标题:文本(“数据:${data.cnt}”),
onTap:(){
data.cnt++;
},
),
],
),
);
}
}
使用ChangeNotifier初始化DataClass{
国际cnt;
int get cnt=>\u cnt;
设置cnt(int val){
_cnt=val;
notifyListeners();
}
数据类(int-cnt):\u-cnt=cnt;
}

ps:类似于
useStateListenable
useStateListenableProvider
您可以将
useState
useStateListenable
组合成类似于
useState

T useListenableState(T数据){
最终状态=使用状态(数据);
返回useListenable(state.value);
}
类游乐场扩展小部件{
康斯特游乐场({Key}):超级(Key:Key);
@凌驾
小部件构建(构建上下文){
印刷(“建造”);
最终数据=useListenableState(数据类(0));
返回脚手架(
appBar:appBar(
标题:文本(“标题”),
),
正文:ListView(
儿童:[
列表砖(
标题:文本(“数据:${data.cnt}”),
onTap:(){
data.cnt++;
},
),
],
),
);
}
}
使用ChangeNotifier初始化DataClass{
国际cnt;
int get cnt=>\u cnt;
设置cnt(int val){
_cnt=val;
notifyListeners();
}
数据类(int-cnt):\u-cnt=cnt;
}

您可以将
useState
useListenable
组合成类似
useListenableState

T useListenableState(T数据){
最终状态=使用状态(数据);
返回useListenable(state.value);
}
类游乐场扩展小部件{
康斯特游乐场({Key}):超级(Key:Key);
@凌驾
小部件构建(构建上下文){
印刷(“建造”);
最终数据=useListenableState(数据类(0));
返回脚手架(
appBar:appBar(
标题:文本(“标题”),
),
正文:ListView(
儿童:[
列表砖(
标题:文本(“数据:${data.cnt}”),
onTap:(){
data.cnt++;
},
),
],
),
);
}
}
使用ChangeNotifier初始化DataClass{
国际cnt;
int get cnt=>\u cnt;
设置cnt(int val){
_cnt=val;
notifyListeners();
}
数据类(int-cnt):\u-cnt=cnt;
}