这就是问题所在。TabScreen()有3页和一个虚空按钮(无状态小部件)。当按下晶圆盒会给你做一个上传的机会,上传后我想刷新一个页面的画面。
return Container(
height: 45.0,
width: 45.0,
// ignore: missing_required_param
child: FabContainer(
icon: Ionicons.add_outline,
mini: true,
),
);
}工厂集装箱的OnTap:
Navigator.pop(context);
Navigator.of(context).push(
CupertinoPageRoute(
builder: (_) => CreatePost(),
),
);
},无法添加.then(){setState.}因为它是一个无状态的小部件,所以我需要设置精确页面的状态,而不是神话容器的状态。
有什么想法吗?
谢谢!
发布于 2022-10-08 17:52:51
在您的updateUi中定义一个TabScreen方法(定义页面)
TabScreen:
void updateUi(){
// here your logic to change the ui
// call setState after you made your changes
setState(() => {});
}将此函数作为构造函数参数传递到FabContainer按钮
FabContainer(
icon: Ionicons.add_outline,
mini: true,
callback: updateUi,
),在FabContainer类中定义它
final Function() callback;调用它来更新ui
callback.call();
发布于 2022-10-09 14:45:55
因此,Ozan的建议是一个非常好的开端,但我无法访问有状态的小部件来设置状态。
在奥赞的建议之外,我所做的就是给这个州一个全球化的钥匙:
final GlobalKey<ScaffoldState> scaffoldKey = GlobalKey<ScaffoldState>();将其分配给脚手架:
return Scaffold(
key: scaffoldKey,使州公共删除_MyPizzasState -> MyPizzasState
创建用于刷新数据的方法:
refreshData() {
pizzas = postService.getMyPizzas();
setState(() {
});
}在创建MyPizzaPage期间分配密钥:
final myPizzasKey = GlobalKey<MyPizzasState>();
{
'title': 'My Pizza',
'icon': Ionicons.pizza_sharp,
'page': MyPizzas(key: myPizzasKey),
'index': 0,
},当我接到电话时,奥赞是怎么说的:
buildFab() {
return Container(
height: 45.0,
width: 45.0,
// ignore: missing_required_param
child: FabContainer(
icon: Ionicons.add_outline,
mini: true,
callback: refreshMyPizzas,
),
);
}
void refreshMyPizzas() {
print("Refreshing");
myPizzasKey.currentState?.refreshData();
}https://stackoverflow.com/questions/73998956
复制相似问题