Flutter 如何从父窗口中的子窗口小部件显示CircularProgressIndicator()?
我有一个来自子状态小部件的网络调用。为此,我需要在包含脚手架的父小部件中显示CircularProgressIndicator。有什么办法可以证明吗 父窗口小部件:Flutter 如何从父窗口中的子窗口小部件显示CircularProgressIndicator()?,flutter,dart,Flutter,Dart,我有一个来自子状态小部件的网络调用。为此,我需要在包含脚手架的父小部件中显示CircularProgressIndicator。有什么办法可以证明吗 父窗口小部件: class OrderDetailPage extends StatefulWidget { @override _OrderDetailPageState createState() => _OrderDetailPageState(); } class _OrderDetailPageState extend
class OrderDetailPage extends StatefulWidget {
@override
_OrderDetailPageState createState() => _OrderDetailPageState();
}
class _OrderDetailPageState extends State<OrderDetailPage> {
bool isloading = false;
Widget build(BuildContext context){
return Scaffold(body: isLoading ? Center(child: CircularProgressIndicator() : Container(
child: ChildWidget()
));
}
}
class OrderDetailPage扩展StatefulWidget{
@凌驾
_OrderDetailPageState createState()=>\u OrderDetailPageState();
}
类_OrderDetailPageState扩展状态{
bool isloading=false;
小部件构建(构建上下文){
返回脚手架(主体:isLoading?中心(子项:圆形压路机指示器():容器(
child:ChildWidget()
));
}
}
儿童:
class ChildWidget extends StatefulWidget {
@override
ChildWidgetState createState() => ChildWidgetState();
}
class ChildWidgetState extends State<OrderDetailPage> {
return Center(child: RaisedButton(onPressed: () { // need to make isloading in parent widget to true and false})
}
class ChildWidget extends StatefulWidget {
ChildWidget({this.callback});
@override
ChildWidgetState createState() => ChildWidgetState();
}
class ChildWidgetState extends State<OrderDetailPage> {
return Center(child: RaisedButton(onPressed: () {
widget.callback();
}
class-ChildWidget扩展了StatefulWidget{
@凌驾
ChildWidgetState createState()=>ChildWidgetState();
}
类ChildWidgetState扩展了状态{
返回中心(子:RaisedButton(按下时:(){//需要将父窗口小部件中的isloading设置为true和false})
}
有两种方法将状态向上传递到小部件树中
将回调函数从父级传递到子级:
class OrderDetailPage extends StatefulWidget {
@override
_OrderDetailPageState createState() => _OrderDetailPageState();
}
class _OrderDetailPageState extends State<OrderDetailPage> {
bool isloading = false;
Widget build(BuildContext context){
return Scaffold(body: isLoading ? Center(child: CircularProgressIndicator() : Container(
child: ChildWidget(callback: () => setState(() => isLoading = !isLoading))
));
}
}
class OrderDetailPage扩展StatefulWidget{
@凌驾
_OrderDetailPageState createState()=>\u OrderDetailPageState();
}
类_OrderDetailPageState扩展状态{
bool isloading=false;
小部件构建(构建上下文){
返回脚手架(主体:isLoading?中心(子项:圆形压路机指示器():容器(
child:ChildWidget(回调:()=>setState(()=>isLoading=!isLoading))
));
}
}
儿童:
class ChildWidget extends StatefulWidget {
@override
ChildWidgetState createState() => ChildWidgetState();
}
class ChildWidgetState extends State<OrderDetailPage> {
return Center(child: RaisedButton(onPressed: () { // need to make isloading in parent widget to true and false})
}
class ChildWidget extends StatefulWidget {
ChildWidget({this.callback});
@override
ChildWidgetState createState() => ChildWidgetState();
}
class ChildWidgetState extends State<OrderDetailPage> {
return Center(child: RaisedButton(onPressed: () {
widget.callback();
}
class-ChildWidget扩展了StatefulWidget{
ChildWidget({this.callback});
@凌驾
ChildWidgetState createState()=>ChildWidgetState();
}
类ChildWidgetState扩展了状态{
返回中心(子项:升起按钮(ON按下:(){
widget.callback();
}
最新的替代方案是使用状态管理解决方案,如InheritedWidget
,提供者
软件包或其他许多软件包中的一个。是的,有一种方法可以做到。请分享您问题中的代码,然后我可以提供帮助you@Niteesh由于安全原因,无法共享代码。父级和子级都是有状态wid获取。我们可以用传递给子窗口小部件的键来显示它吗?当您提出问题时,假设您在这里创建简单的可复制代码,这些问题集中在您遇到的问题上。请参阅如何使用future builder提出问题