Xav*_* VZ 2 flutter flutter-layout flutter-animation flutter-web
我在登录页面中遇到 CircularProgressIndicator 的问题。我想这样做。当用户点击“登录”按钮时,我希望该应用程序创建一个 CircularProgressIndicator 并踢出 raiseButton Text 并添加 CircularProgessIdnicator,然后我的应用程序从我的网络服务获取数据我想停止 CircularProgessIndicator。有小费吗?谢谢。
实际代码(您可以毫无问题地编译它,只需在依赖项中添加 http: ^0.12.0 即可)。
实际系统照片:
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
void main() => runApp(MaterialApp(home:MyApp()));
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
bool estaCargando = false;
TextEditingController user = TextEditingController();
TextEditingController phone = TextEditingController();
Future<List> _loginn() async {
var url = "https://pruebasxaviervelez.000webhostapp.com/login.php";
final response = await http
.post(url, body: {"usuario": user.text, "telefono": phone.text});
print(response.body);
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
color: Colors.pink,
child: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Container(
height: 100,
width: 100,
child: TextField(
controller: user,
decoration: InputDecoration(hintText: 'username'),
),
),
Container(
height: 100,
width: 100,
child: TextField(
controller: phone,
decoration: InputDecoration(hintText: 'password'),
),
),
RaisedButton(
child: Text('Log in'),
onPressed: (){
_loginn();
},
)
],
),
)),
);
}
}
Run Code Online (Sandbox Code Playgroud)
只需将代码更改如下,
// Inside your _MyAppState class
bool isLoading = false;
// Inside your build method
isLoading ? RaisedButton(
child: Text('Log in'),
onPressed: async(){
setState((){
isLoading=true;
});
await _loginn();
setState((){
isLoading=false;
});
},
)
: Center(child:CircularProgressIndicator())
Run Code Online (Sandbox Code Playgroud)
当您按下按钮时,首先我们通过 setState 方法将进度指示器的加载状态更改为 true,这将重新呈现 UI。
然后使用 await 关键字编写异步 loginn() 方法将等待该方法被执行。
然后它会使用 setState 方法将进度指示器状态更改为 false ,这将再次重新呈现 UI。
| 归档时间: |
|
| 查看次数: |
4485 次 |
| 最近记录: |