按照获取数据的方式来设置状态的正确方法是在获取数据的操作完成后使用setState
方法来更新状态。
以下是一个示例代码,展示了如何根据获取到的数据来设置状态:
import 'package:flutter/material.dart';
class MyWidget extends StatefulWidget {
@override
_MyWidgetState createState() => _MyWidgetState();
}
class _MyWidgetState extends State {
String data = '';
@override
void initState() {
super.initState();
fetchData();
}
void fetchData() async {
// 模拟异步获取数据
await Future.delayed(Duration(seconds: 2));
String newData = '这是从网络获取到的数据';
// 在获取数据后使用setState方法更新状态
setState(() {
data = newData;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Text(data),
),
);
}
}
void main() {
runApp(MaterialApp(
home: MyWidget(),
));
}
在上述示例代码中,data
是一个用于存储获取到的数据的状态。在initState
方法中调用fetchData
方法来模拟异步获取数据的操作,然后使用setState
方法在获取数据后更新状态。在build
方法中使用data
来展示获取到的数据。
请注意,为了能够在initState
方法中使用异步方法,我们使用了async
和await
关键字来处理异步操作。