Flutter 从子窗口小部件通知父窗口小部件
我正在尝试从子部件刷新父部件。实际上,有很多小部件介于a使用B和B使用C之间。我想在C小部件中刷新事件的小部件。我研究了很多,但找不到确切的答案。截取的代码将非常有用。提前感谢为什么要刷新?您是否更新了任何数据并希望显示新数据 您可以尝试使用提供者小部件。使用它,您可以修改任何数据,并通知对该数据感兴趣的所有人该数据已更改 在您的设置中,您可以将提供者放在A小部件上,在C小部件上,您可以获取值、更新并通知所有人。执行此操作时,小部件将使用更新的信息自动重建 代码如下所示:Flutter 从子窗口小部件通知父窗口小部件,flutter,flutter-layout,Flutter,Flutter Layout,我正在尝试从子部件刷新父部件。实际上,有很多小部件介于a使用B和B使用C之间。我想在C小部件中刷新事件的小部件。我研究了很多,但找不到确切的答案。截取的代码将非常有用。提前感谢为什么要刷新?您是否更新了任何数据并希望显示新数据 您可以尝试使用提供者小部件。使用它,您可以修改任何数据,并通知对该数据感兴趣的所有人该数据已更改 在您的设置中,您可以将提供者放在A小部件上,在C小部件上,您可以获取值、更新并通知所有人。执行此操作时,小部件将使用更新的信息自动重建 代码如下所示: class AppSt
class AppState with ChangeNotifier {
AppState();
YourData _data;
void setData(YourData data) {
_data = data;
notifyListeners();
}
}
ChangeNotifierProvider.value(
value: AppState(),
child: WidgetA()
)
WidgetC() {
Provider.of<AppState>(context).setData(yourChangedDataHere);
}
使用ChangeNotifier初始化AppState{
AppState();
你的数据(你的数据),;
void setData(您的数据){
_数据=数据;
notifyListeners();
}
}
ChangeNotifierProvider.value(
值:AppState(),
孩子:威吉塔()
)
WidgetC(){
Provider.of(context.setData)(yourchangedatahere);
}
有几种解决方案:
将执行A
的回调传递给setState
,然后将其传递给B
:C
A类扩展了StatefulWidget{
@凌驾
_AState createState()=>_AState();
}
类_AState扩展状态{
@凌驾
小部件构建(构建上下文){
返回B(
onSomething:()=>setState((){}),
);
}
}
类扩展了无状态控件{
某事物的最终失效;
常量B({Key-Key,this.onSomething}):super(Key:Key);
@凌驾
小部件构建(构建上下文){
返回C(onSomething:onSomething);
}
}
类C扩展了无状态控件{
某事物的最终失效;
常量C({Key-Key,this.onSomething}):super(Key:Key);
@凌驾
小部件构建(构建上下文){
返回上升按钮(
在某件事上,
);
}
}
- 在
中使用A
,并从NotificationListener
发送C
通知: