面试题答案
一键面试在Flutter开发中使用Dart语言,通过async/await
关键字实现异步操作的方式如下:
async
关键字用于标记一个异步函数,该函数会返回一个Future
对象。await
关键字只能在标记为async
的函数内部使用,它用于暂停当前函数的执行,直到await
后的Future
完成(resolved)。
以下是使用Future
处理异步任务(从网络获取数据并更新UI)的示例:
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
class AsyncExample extends StatefulWidget {
@override
_AsyncExampleState createState() => _AsyncExampleState();
}
class _AsyncExampleState extends State<AsyncExample> {
String _data = '';
Future<String> fetchData() async {
final response = await http.get(Uri.parse('https://example.com/api/data'));
if (response.statusCode == 200) {
return response.body;
} else {
throw Exception('Failed to load data');
}
}
@override
void initState() {
super.initState();
fetchData().then((value) {
setState(() {
_data = value;
});
}).catchError((error) {
print('Error: $error');
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Async/Await Example'),
),
body: Center(
child: Text(_data),
),
);
}
}
在上述示例中:
fetchData
函数被标记为async
,它内部使用await
等待http.get
操作完成,http.get
返回一个Future<Response>
。- 在
initState
中,调用fetchData
,当Future
完成时,通过setState
更新UI,将获取到的数据显示在Text
组件中。如果获取数据过程中出现错误,通过catchError
捕获并打印错误信息。