FutureBuilder
import "package:flutter/material.dart";
void main()
{
runApp(MyApp());
}
class MyApp extends StatelessWidget
{
MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: "FutureBuilder Demo",
debugShowCheckedModeBanner: false,
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: FutureDemo(),
);
}
}
class FutureDemo extends StatefulWidget
{
FutureDemo({super.key});
@override
State<FutureDemo> createState()
{
return FutureDemoState();
}
}
class FutureDemoState extends State<FutureDemo>
{
/// Here below return type is String
Future<String> getData() async {
await Future.delayed(const Duration(seconds: 3),);
return "Data";
}
/// Here below return type is integer
// Future<int> getData() async {
// await Future.delayed(Duration(seconds: 3),);
// return 0;
// }
/// Here below return type is boolean
// Future<bool> getData() async {
// await Future.delayed(Duration(seconds: 3),);
// return true;
// }
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text("Future Builder Demo"),
centerTitle: true,
backgroundColor: Colors.grey,
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
ElevatedButton(
onPressed: () {
setState(() {
getData();
},);
},
child: const Text("Click Here"),
),
const SizedBox(height: 40.0),
FutureBuilder(
future: getData(),
builder: (context, snapshot) {
if(snapshot.connectionState == ConnectionState.waiting)
{
return const CircularProgressIndicator();
}
else if(snapshot.connectionState == ConnectionState.done ||
snapshot.connectionState == ConnectionState.active)
{
if(snapshot.hasError)
{
return Text(snapshot.error.toString());
}
else if(snapshot.hasData)
{
return Text(snapshot.data.toString());
}
else
{
return const Text("Something went Wrong!");
}
}
else
{
return Text(snapshot.connectionState.toString());
}
},
),
],
),
),
);
}
}
Comments
Post a Comment