flutter - 如何从父级中的子小部件显示 CircularProgressIndicator()?
问题描述
我有来自子状态小部件的网络调用。为此,我需要在包含 Scaffold 的父小部件中显示 CircularProgressIndicator。有什么办法可以显示吗?
父小部件:
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 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})
}
解决方案
有两种方法可以State
向上传递到 Widget Tree。
将回调函数从父级传递给子级:
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 ChildWidget extends StatefulWidget {
ChildWidget({this.callback});
@override
ChildWidgetState createState() => ChildWidgetState();
}
class ChildWidgetState extends State<OrderDetailPage> {
return Center(child: RaisedButton(onPressed: () {
widget.callback();
}
较晚的替代方法是使用状态管理解决方案,例如InheritedWidget
,Provider
包或许多其他解决方案之一。
推荐阅读
- r - R Str_remove 从管道内的多个列
- amazon-web-services - 如何在 Kinesis Analytics SQL 查询中解析 Json
- ios - 如何在 SwiftUI 中查找滚动视图内容是否已到达内容的末尾
- elm - 包含可能 Time.Posix 的对象的排序列表
- matlab - 优化相邻点的总和 3D
- amazon-web-services - 在发送到 ALB 之前在 AWS Lambda 中处理 URL
- powershell - 为什么这个脚本不会连续运行多次?
- node.js - 同步 NodeJS 批处理作业
- mysql - 有没有办法根据 Hive/SQL 中的条件初始化计数器?
- android - 将 SearchView 添加到片段中的自定义工具栏