Skip to content

Commit 4dd7814

Browse files
Merge pull request #4 from vijayinyoutube/refactor
Refactor
2 parents 0eaf942 + 532170e commit 4dd7814

File tree

2 files changed

+33
-4
lines changed

2 files changed

+33
-4
lines changed

lib/Data/Repository/home_page_repo.dart

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import '../../Business_Logic/Exceptions/exception_handlers.dart';
1+
import 'package:flutter_dotenv/flutter_dotenv.dart';
2+
23
import '../API/base_client.dart';
34
import '../Models/home_page_model.dart';
4-
import 'package:flutter_dotenv/flutter_dotenv.dart';
55

66
abstract class DemoRepository {
77
Future<DemoModel> fetchData();

lib/Presentation/Screens/HomePage/UI/home_page.dart

+31-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1+
import '../../../../Data/Models/home_page_model.dart';
2+
13
import '../../../../Data/Repository/home_page_repo.dart';
2-
import '../../../Components/future_builder.dart';
34
import 'package:flutter/material.dart';
45

56
class MyHomePage extends StatefulWidget {
@@ -12,15 +13,43 @@ class MyHomePage extends StatefulWidget {
1213
}
1314

1415
class _MyHomePageState extends State<MyHomePage> {
16+
late Future<DemoModel> futureDemoModel;
17+
18+
@override
19+
void initState() {
20+
futureDemoModel = DemoRepo().fetchData();
21+
super.initState();
22+
}
23+
1524
@override
1625
Widget build(BuildContext context) {
1726
return Scaffold(
1827
appBar: AppBar(
1928
title: Text(widget.title),
2029
),
2130
body: Center(
22-
child: FutureBuilderWidget(futureCall: DemoRepo().fetchData()),
31+
child: FutureBuilder(
32+
future: futureDemoModel,
33+
builder: (BuildContext context, snapshot) {
34+
if (snapshot.hasData) {
35+
return buildDataLayout(snapshot.data as DemoModel);
36+
} else if (snapshot.hasError) {
37+
return Text(snapshot.error.toString());
38+
} else if (snapshot.connectionState == ConnectionState.waiting) {
39+
return const Text('Waiting....');
40+
} else if (snapshot.connectionState == ConnectionState.none) {
41+
return const Text('Cannot establish connection with the server.');
42+
}
43+
return const Center(child: CircularProgressIndicator());
44+
},
45+
),
2346
),
2447
);
2548
}
49+
50+
Widget buildDataLayout(DemoModel data) => ListTile(
51+
title: Text(data.userId.toString()),
52+
subtitle: Text(data.title),
53+
trailing: Text(data.completed.toString()),
54+
);
2655
}

0 commit comments

Comments
 (0)