flutter实现异步请求网络数据并显示加载中demo
时间: 2023-09-09 16:02:21 浏览: 164
要实现异步请求网络数据并显示加载中demo,我们可以使用Flutter框架的http插件和状态管理来完成。
首先,我们需要在pubspec.yaml文件中添加http插件的依赖。
```
dependencies:
flutter:
sdk: flutter
http: ^0.13.0
```
然后,在需要显示加载中的页面中,创建一个有状态的组件。在该组件的状态中定义一个布尔值isLoading来表示数据是否正在加载中。
```dart
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'dart:convert';
class LoadingDemo extends StatefulWidget {
@override
_LoadingDemoState createState() => _LoadingDemoState();
}
class _LoadingDemoState extends State<LoadingDemo> {
bool isLoading = false;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Loading Demo'),
),
body: Center(
child: isLoading ? CircularProgressIndicator() : RaisedButton(
child: Text('加载数据'),
onPressed: () {
fetchData();
},
),
),
);
}
void fetchData() async {
setState(() {
isLoading = true;
});
var response = await http.get('https://api.example.com/data');
if (response.statusCode == 200) {
// 请求成功
var data = json.decode(response.body);
// 处理数据
} else {
// 请求失败
}
setState(() {
isLoading = false;
});
}
}
```
在上述代码中,isLoading初始值为false,当点击加载数据按钮时,调用fetchData函数来请求数据。在请求数据时,将isLoading设置为true来显示加载动画,请求完成后再将其设置为false。
为了能够在Flutter中显示加载动画,我们使用了CircularProgressIndicator小部件,它会在屏幕中间显示一个圆形的进度指示器。
通过上述代码,我们可以实现一个简单的加载中demo,用于异步请求网络数据并显示加载状态。当点击加载数据按钮时,会显示加载动画,请求完成后隐藏加载动画。只需简单几步即可实现这样的功能。
阅读全文