Skip to content

Commit 8aec517

Browse files
committed
fixed user experien ce and added refresh button for table data
1 parent 746648d commit 8aec517

18 files changed

+321
-291
lines changed
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import 'package:samba_stats/models/fixture.dart';
2+
3+
import '../services/fixture_service.dart';
4+
import '/exports/exports.dart';
5+
6+
class FixtureController with ChangeNotifier {
7+
Datum _fixtureData = new Datum.fromJson({});
8+
Datum get fixtureData => _fixtureData;
9+
10+
void fetchFixtureData(String leagueId, String fixtureId) {
11+
FixtureService.getFixtures(leagueId).then((value) {
12+
_fixtureData = value.where((element) => element.id == fixtureId).first;
13+
notifyListeners();
14+
});
15+
}
16+
}

lib/main.dart

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@
44
/// Date: 03/11/2023
55
66
import 'package:flutter/services.dart';
7-
import 'package:samba_stats/controllers/match_date_controller.dart';
8-
import '/theme/Theme.dart';
7+
import 'controllers/fixture_controller.dart';
8+
import 'controllers/match_date_controller.dart';
9+
import 'theme/Theme.dart';
910

1011
import '/exports/exports.dart';
1112
import 'controllers/league_controller.dart';
@@ -54,6 +55,9 @@ void main() async {
5455
ChangeNotifierProvider(
5556
create: (_) => TableController(),
5657
),
58+
ChangeNotifierProvider(
59+
create: (_) => FixtureController(),
60+
),
5761
],
5862
child: Consumer<AppController>(
5963
builder: (context, controller, child) {

lib/models/fixture.dart

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -67,25 +67,25 @@ class Datum {
6767
});
6868

6969
factory Datum.fromJson(Map<String, dynamic> json) => Datum(
70-
firstHalfEnded: json["firstHalfEnded"],
71-
secondHalfEnded: json["secondHalfEnded"],
72-
isRunning: json["isRunning"],
73-
id: json["_id"],
74-
league: json["league"],
75-
hometeam: Team.fromJson(json["hometeam"]),
76-
awayteam: Team.fromJson(json["awayteam"]),
77-
minutesplayed: json["minutesplayed"],
78-
kickofftime: json["kickofftime"],
79-
fixtureDate: json["fixtureDate"],
80-
homeGoals: json["homeGoals"],
81-
awayGoals: json["awayGoals"],
82-
isLive: json["isLive"],
83-
halfEnded: json["halfEnded"],
84-
quarterEnded: json["quarterEnded"],
85-
matchEnded: json["matchEnded"],
86-
elapsedTime: json["elapsedTime"],
87-
twohalves: json["twohalves"],
88-
v: json["__v"],
70+
firstHalfEnded: json["firstHalfEnded"] ?? false,
71+
secondHalfEnded: json["secondHalfEnded"] ?? false,
72+
isRunning: json["isRunning"] ?? false,
73+
id: json["_id"] ?? "",
74+
league: json["league"] ?? "",
75+
hometeam: Team.fromJson(json["hometeam"] ?? {}),
76+
awayteam: Team.fromJson(json["awayteam"] ?? {}),
77+
minutesplayed: json["minutesplayed"] ?? "",
78+
kickofftime: json["kickofftime"] ?? "",
79+
fixtureDate: json["fixtureDate"] ?? "",
80+
homeGoals: json["homeGoals"] ?? 0,
81+
awayGoals: json["awayGoals"] ?? 0,
82+
isLive: json["isLive"] ?? false,
83+
halfEnded: json["halfEnded"] ?? false,
84+
quarterEnded: json["quarterEnded"] ?? false,
85+
matchEnded: json["matchEnded"] ?? false,
86+
elapsedTime: json["elapsedTime"] ?? "",
87+
twohalves: json["twohalves"] ?? false,
88+
v: json["__v"] ?? 0,
8989
);
9090

9191
Map<String, dynamic> toJson() => {
@@ -123,9 +123,9 @@ class Team {
123123
});
124124

125125
factory Team.fromJson(Map<String, dynamic> json) => Team(
126-
id: json["_id"],
127-
name: json["name"],
128-
image: json["image"],
126+
id: json["_id"] ?? "",
127+
name: json["name"] ?? "",
128+
image: json["image"] ?? "",
129129
);
130130

131131
Map<String, dynamic> toJson() => {

lib/services/blog_service.dart

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ class BlogService {
3636
);
3737
StreamedResponse response = await request.send();
3838
if (response.statusCode == 200) {
39+
Client().close();
3940
context.read<LoaderController>().isLoading = false;
4041
var result = json.decode(await response.stream.bytesToString());
4142
showMessage(
@@ -44,10 +45,12 @@ class BlogService {
4445
);
4546
Routes.popPage();
4647
} else {
48+
Client().close();
4749
context.read<LoaderController>().isLoading = false;
4850
showMessage(msg: response.reasonPhrase ?? "Error adding a blog");
4951
}
5052
} on Exception catch (e, _) {
53+
Client().close();
5154
context.read<LoaderController>().isLoading = false;
5255
debugPrint("Error $_");
5356
}
@@ -93,7 +96,7 @@ class BlogService {
9396
request.fields['league'] = data['league'];
9497
request.fields['action'] = "Blogs";
9598
// handle file upload
96-
if (data['stream'] != null) {
99+
if (data['stream'] != null) {
97100
request.files.add(
98101
MultipartFile(
99102
"blog",

lib/services/fixture_service.dart

Lines changed: 30 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,30 +31,44 @@ class FixtureService {
3131
Uri.parse("${Apis.runningFixture}$leagueId/$matchId"),
3232
);
3333
if (response.statusCode == 200) {
34+
Client().close();
3435
return fixtureModelFromJson(response.body).data;
3536
} else {
37+
Client().close();
3638
return Future.error(jsonDecode(response.body)['message']);
3739
}
3840
} on ClientException catch (e) {
3941
debugPrint(e.message);
42+
Client().close();
4043
return Future.error(e.message);
4144
}
4245
}
4346

4447
// function to add a fixture
4548
void createFixture(Map<String, dynamic> data) async {
4649
try {
47-
Response response =
48-
await Client().post(Uri.parse(Apis.createFixture), body: data);
50+
// trigger loader
51+
showLoader(text: "Creating new fixture");
52+
Response response = await Client().post(
53+
Uri.parse(Apis.createFixture),
54+
body: data,
55+
);
4956
if (response.statusCode == 200) {
57+
// hide loader
58+
Routes.popPage();
5059
showMessage(msg: "Fixture added successfully");
5160
Routes.popPage();
61+
Client().close();
5262
} else {
63+
// hide loader
64+
Routes.popPage();
5365
showMessage(msg: "Fixture adding failed", color: Colors.red);
5466
Routes.popPage();
67+
Client().close();
5568
}
5669
} on ClientException catch (e) {
5770
debugPrint(e.message);
71+
Client().close();
5872
}
5973
}
6074

@@ -83,17 +97,20 @@ class FixtureService {
8397
);
8498
// print(res.body);
8599
if (res.statusCode == 200) {
100+
Client().close();
86101
showMessage(msg: "Fixture updated successfully");
87102
// ignore: use_build_context_synchronously
88103
Provider.of<LoaderController>(context, listen: false).isLoading = false;
89104
Routes.popPage();
90105
} else {
106+
Client().close();
91107
showMessage(msg: "Failed to update fixture");
92108
// ignore: use_build_context_synchronously
93109
Provider.of<LoaderController>(context, listen: false).isLoading = false;
94110
Routes.popPage();
95111
}
96112
} on ClientException catch (e) {
113+
Client().close();
97114
// ignore: use_build_context_synchronously
98115
Provider.of<LoaderController>(context, listen: false).isLoading = false;
99116
debugPrint(e.message);
@@ -107,12 +124,15 @@ class FixtureService {
107124
);
108125
// print(res.body);
109126
if (res.statusCode == 200) {
127+
Client().close();
110128
showMessage(msg: "Started successfully");
111129
} else {
130+
Client().close();
112131
showMessage(msg: "Failed to update fixture");
113132
}
114133
} on ClientException catch (e) {
115-
debugPrint(e.message);
134+
Client().close();
135+
return Future.error(e.message);
116136
}
117137
}
118138

@@ -134,21 +154,26 @@ class FixtureService {
134154

135155
static void updateFixtureGoals(Map<String, dynamic> data) async {
136156
try {
137-
log(data.toString());
157+
showLoader(text: "Updating fixture");
138158
Response res = await Client().put(
139159
Uri.parse(Apis.fixtureGoals + data["fixtureId"]),
140160
body: data,
141161
);
142162
// print(res.body);
143163
if (res.statusCode == 200) {
164+
Routes.popPage();
165+
Client().close();
144166
showMessage(msg: "Fixture updated successfully");
145-
146167
Routes.popPage();
147168
} else {
169+
Routes.popPage();
170+
Client().close();
148171
showMessage(msg: json.decode(res.body)['message']);
149172
Routes.popPage();
150173
}
151174
} on ClientException catch (e) {
175+
Routes.popPage();
176+
Client().close();
152177
debugPrint(e.message);
153178
}
154179
}

lib/services/league_service.dart

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,17 @@ class LeagueService {
77
try {
88
Response response = await Client().get(Uri.parse(Apis.fetchLeagues));
99
if (response.statusCode == 200) {
10+
Client().close();
1011
res = response.body;
12+
return leaguesModelFromJson(res).message;
1113
} else {
12-
showMessage(msg: "Something went wrong", color: Colors.red);
14+
Client().close();
15+
return Future.error("Something went wrong");
1316
}
1417
} on ClientException catch (e) {
15-
debugPrint(e.message);
18+
Client().close();
19+
return Future.error(e.message);
1620
}
17-
return leaguesModelFromJson(res).message;
1821
}
1922

2023
// function to create a league
@@ -43,8 +46,10 @@ class LeagueService {
4346
if (response.statusCode == 200) {
4447
Routes.popPage();
4548
showMessage(msg: "League added successfully");
49+
Client().close();
4650
}
4751
} on ClientException catch (e) {
52+
Client().close();
4853
debugPrint(e.message);
4954
}
5055
}

lib/services/match_date_service.dart

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,17 @@ class MatchDateService {
77
Response res =
88
await Client().delete(Uri.parse(Apis.deleteMatchDates + id));
99
if (res.statusCode == 200) {
10+
Client().close();
1011
showMessage(msg: "Match date removed successfully.");
1112
Routes.popPage();
1213
} else {
1314
showMessage(msg: "Match date removing failed.");
1415
Routes.popPage();
16+
Client().close();
1517
}
1618
} on ClientException catch (e) {
17-
print(e.message);
19+
Client().close();
20+
debugPrint(e.message);
1821
}
1922
}
2023

@@ -29,6 +32,7 @@ class MatchDateService {
2932
} catch (e) {
3033
// print(e);
3134
}
35+
Client().close();
3236
return matchDateModelFromJson(r);
3337
}
3438

@@ -37,13 +41,16 @@ class MatchDateService {
3741
Response res =
3842
await Client().post(Uri.parse(Apis.addMatchDates), body: data);
3943
if (res.statusCode == 200) {
44+
Client().close();
4045
Routes.popPage();
4146
showMessage(msg: "Match Date added successfully");
4247
} else {
48+
Client().close();
4349
Routes.popPage();
4450
showMessage(msg: "Match Date adding failed");
4551
}
4652
} on ClientException catch (e) {
53+
Client().close();
4754
// print(e);
4855
}
4956
}

lib/services/player_service.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,14 @@ class PlayerService {
1010
Uri.parse(Apis.fetchPlayers + teamId),
1111
);
1212
if (response.statusCode == 200) {
13+
Client().close();
1314
return playersModelFromJson(response.body).message;
1415
} else {
16+
Client().close();
1517
return Future.error(jsonDecode(response.body)['message']);
1618
}
1719
} on Exception catch (e) {
20+
Client().close();
1821
return Future.error(e.toString());
1922
}
2023
}

0 commit comments

Comments
 (0)