FutureBuilder的使用,以及错误处理
import 'package:flutter/material.dart';
void main(List<String> args) {
runApp(const MaterialApp(
home: HomePage(),
));
}
class HomePage extends StatefulWidget {
const HomePage({super.key});
@override
State<HomePage> createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
@override
Widget build(BuildContext context) {
return const Scaffold(
body: Center(
child: SizedBox(
width: 200,
height: 200,
child: FutureWidget(),
),
),
);
}
}
class FutureWidget extends StatefulWidget {
const FutureWidget({super.key});
@override
State<FutureWidget> createState() => _FutureWidgetState();
}
class _FutureWidgetState extends State<FutureWidget> {
Future<String>? futureData;
@override
void initState() {
futureData = fetchFutureData();
super.initState();
}
Future<String>? fetchFutureData() async {
await Future.delayed(const Duration(seconds: 4));
// throw "Network timeout";
// throw Text("Network timeout");
return 1000.toString();
}
@override
Widget build(Object context) {
return FutureBuilder(
future: futureData,
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return const CircularProgressIndicator();
} else if (snapshot.hasError) {
return Text(" ERROR : ${snapshot.error}");
} else {
return Text(" DATA: ${snapshot.data}");
}
},
);
}
}