我正在尝试在登录时显示进度指示器。我创建了一个布尔值以在我想显示和隐藏指示器时进行切换,但是我无法确定应该在何处显示指示器。
我可以将它添加为我的 Container 中的小部件之一,我在其中显示所有其他屏幕小部件,但是我不希望它干扰其他小部件,而是显示在所有小部件之上。我怎样才能做到这一点?我怎样才能做到这一点?
提前致谢。
我的代码
import ....
class Login extends StatefulWidget{
...
}
class _LoginState extends State<Login> {
bool _loading = false;
@override
Widget build(BuildContext context){
Future<Map<String, dynamic>> getData() async {
var client = http.Client();
//to SHOW Indicator
setState(() {
_loading = true;
});
var response = await client
.post(
Uri.encodeFull(
' api url '),
body:
{"email":"$username","password":"$password"}
).whenComplete(
client.close);
var res = json.decode(response.body);
//to HIDE indicator
setState(() {
_loading = false;
});
if(response.statusCode <200 || response.statusCode > 400){
print("Error");
throwError();
}
if(response.statusCode == 200 ){
widget.onSignedIn();
}
if (!mounted)
return {'success': false};
return json.decode(response.body);
}
Container view = Container(
....
);
return Scaffold(
resizeToAvoidBottomPadding: false,
body: view
);
}
}
正如CopsOnRoad提到的,Stack
如果要放置多个Widget
互不干扰的 s,则必须使用。
此外,Dart 2.3 引入了集合 if。有了它,您可以Collection
仅在条件为true
.
Stack(
alignment: Alignment.center,
children: [
Container(child: ...),
if (_loading) CircularProgressIndicator(),
],
)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句