Flutter 是一个用于构建跨平台移动应用程序的开源框架,它允许开发者使用单一的代码库来创建在 iOS 和 Android 平台上都能运行的应用。从 API 接收数据是 Flutter 应用程序中常见的任务,通常涉及到网络请求和数据解析。
以下是一个简单的 Flutter 示例,展示如何使用 http
包从 API 接收 JSON 数据:
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('API Example')),
body: DataFetch(),
),
);
}
}
class DataFetch extends StatefulWidget {
@override
_DataFetchState createState() => _DataFetchState();
}
class _DataFetchState extends State<DataFetch> {
List<dynamic> _data = [];
bool _isLoading = true;
@override
void initState() {
super.initState();
fetchData();
}
Future<void> fetchData() async {
try {
final response = await http.get(Uri.parse('https://api.example.com/data'));
if (response.statusCode == 200) {
setState(() {
_data = jsonDecode(response.body);
_isLoading = false;
});
} else {
throw Exception('Failed to load data');
}
} catch (e) {
print(e);
setState(() {
_isLoading = false;
});
}
}
@override
Widget build(BuildContext context) {
return _isLoading
? Center(child: CircularProgressIndicator())
: ListView.builder(
itemCount: _data.length,
itemBuilder: (context, index) {
return ListTile(
title: Text(_data[index]['title']),
subtitle: Text(_data[index]['description']),
);
},
);
}
}
try-catch
块捕获异常并处理错误。jsonDecode
解析 JSON 数据,并处理可能的格式错误。ListView.builder
而不是 ListView
来提高列表渲染的性能。通过以上步骤,你可以有效地在 Flutter 应用程序中从 API 接收和处理数据。
领取专属 10元无门槛券
手把手带您无忧上云