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

Popular posts from this blog

Second GET API Calling with Bloc simple Example in Flutter

Stack Container Scrollable Card widget UI with Custom Widget

Pagination with Bloc Pattern in Flutter