modal_progress_hud
一个简单的组件包装器,用于启用模态进度 HUD(模态进度指示器,HUD = Heads Up Display)。

用法
ModalProgressHUD(child: _buildWidget(), inAsyncCall: _saving)
只需将小部件作为 ModalProgressHUD 的子组件包裹起来,通常是一个表单,以及一个布尔值
保存在本地状态中。
首次加载时,布尔值为 false,并且显示子组件。
提交后,并在进行异步调用之前,将本地布尔值设置为
true。子组件将重新绘制并显示模态进度 HUD。
之后
异步调用完成后,将布尔值设置为 false。子组件将
重新绘制,而不显示模态进度指示器。
class SettingsPage extends StatefulWidget {
@override
_SettingsPageState createState() => new _SettingsPageState();
}
class _SettingsPageState extends State<SettingsPage> {
bool _saving = false;
void _submit() {
setState(() {
_saving = true;
});
//Simulate a service call
print('submitting to backend...');
new Future.delayed(new Duration(seconds: 4), () {
setState(() {
_saving = false;
});
});
}
Widget _buildWidget() {
return new Form(
child: new Column(
children: [
new SwitchListTile(
title: const Text('Bedroom'),
value: _bedroom,
onChanged: (bool value) {
setState(() {
_bedroom = value;
});
},
secondary: const Icon(Icons.hotel),
),
new RaisedButton(
onPressed: _submit,
child: new Text('Save'),
),
],
),
);
}
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text('Flutter Progress Indicator Demo'),
backgroundColor: Colors.blue,
),
body: ModalProgressHUD(child: _buildWidget(), inAsyncCall: _saving),
);
}
}